2016-12-01 115 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