shell – 如何使用awk删除列2和列3匹配的行?
发布时间:2020-12-15 22:03:54 所属栏目:安全 来源:网络整理
导读:我有一个包含4列的文件: ifile.txt3 5 2 21 4 2 14 5 7 2 5 5 7 1 0 0 1 13 5 7 35 4 2 2 我想删除第2列和第2列的行. 3个值与之前的值相同.例如,第2行和第2行第7列和第2列中的值相同. 3.同样第3行和第3行. 4第6列和第2列中的值相同.所以我想保留第2行并删除
我有一个包含4列的文件:
ifile.txt 3 5 2 2 1 4 2 1 4 5 7 2 5 5 7 1 0 0 1 1 3 5 7 3 5 4 2 2 我想删除第2列和第2列的行. 3个值与之前的值相同.例如,第2行和第2行第7列和第2列中的值相同. 3.同样第3行和第3行. 4&第6列和第2列中的值相同.所以我想保留第2行并删除第7行.同样保留第3行并删除第4行和第6行.我的输出是: ofile.txt 3 5 2 2 1 4 2 1 4 5 7 2 0 0 1 1 我试过这个命令 awk '{a[NR]=$2""$3} a[NR]!=a[NR-1]{print}' ifile.txt > ofile.txt 但它没有给出我的欲望输出. 解决方法$awk '!(($2,$3) in a); {a[$2,$3]}' ifile 3 5 2 2 1 4 2 1 4 5 7 2 0 0 1 1 这个怎么运作 awk一次读取一行输入文件.每个输入行分为字段.在这种情况下,重要字段是第二个,表示为$2,第三个字段表示为$3. >((2美元,3美元)a) 如果$2,$3不是关联数组a中的键,则此条件为真.由于未指定任何操作,因此当此条件为真时,将执行默认操作,即打印该行. 更详细的说,当$2,$3是a的关键时,a中的$($2,$3)为真.但是,我们希望条件恰恰相反.因此,我们将awk的否定运算符!应用于它. 这增加了2美元,3美元作为一个关键. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |