2016-12-01 75 views
0

我有一个包含三列的文件。从一些行中我想删除第三列中的一个元素。我还有一个包含行数的列表,我想从中删除第三个元素。从某个位置删除元素

我的文件看起来像:

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)? 我希望每一个建议。

回答

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 
+0

是的,这正是我需要的。谢谢! – MirrG

+0

@MirrG很高兴听到它帮助:) – nu11p01n73R