首页 > 解决方案 > 如何创建保留具有特定值的列名的文件

问题描述

我有一个文件,其中第一列采用某些值(在本例中为 4)

product,0 0,no way
brand,0 0 0,detergent
product,0 0 1,sugar
negative,0 0 1, sight
city,0 0 2,grind

我想构建 3 个文件,一个具有 3 个列值,一个具有 2 个列值,一个具有 1 个列值。*此外,这些值之一必须是“产品”

文件 3.txt

product,0 0,no way
brand,0 0 0,detergent
product,0 0 1,sugar
negative,0 0 1, sight

文件2.txt

product,0 0,no way
brand,0 0 0,detergent
product,0 0 1,sugar

文件1.txt

product,0 0,no way
product,0 0 1,sugar

这个过程可以在 awk 中自动化吗?此时我正在手动制作带有列名的文件以保留并使用它

awk 'NR==FNR{v[$1]; next} $1 in v' values.txt FS=, datafile

标签: bashawksed

解决方案


你可以试试

#! /usr/bin/awk -f

BEGIN { FS=","}
{ 
    if (length(w) < m && !($1 in w)) w[$1]=1
    if ($1 in w) print
}

chmod 它并像调用它一样

$ ./script.awk -v m=3 datafile > file3.txt

其中m是唯一值的数量

编辑

环形

for m in $(seq 100); do ./script.awk -v m=$m datafile > file$m.txt; done

推荐阅读