我有一个包含三列的文件。从某些行我想删除第三列中的元素。我还有一个包含行数的列表,我想从中删除第三个元素。
我的文件如下:
2.34 5.3974 8.202847
8.271 6.294 9.04
9.2846 5.847 1.372
我的行号列表:
2
3
欲望输出:
2.34 5.3974 8.202847
8.271 6.294
9.2846 5.847
当我有一个小文件时,我只使用了:awk '{if (NR==2 || NR==3) $3=""; print}' file
。
但是这个解决方案不起作用,如果我有~1500行改变。如何使用bash和awk(或sed)?
我很感激所有的建议。
答案 0 :(得分:3)
一种解决方案是将行号保存在文件中lines
并使用awk
来读取该文件和输入文件以过滤掉行。
示例强>
$ cat lines
2
3
$ awk 'FNR==NR{line[$0]++; next} FNR in line{$3=""}1' lines file
2.34 5.3974 8.202847
8.271 6.294
9.2846 5.847