2016-05-14 69 views
0

如何從文件中的每一行刪除第一個字,如果它包含多個字?有條件地刪除第一個字

文件:

test test2 
test3 
test4 test5 test6 
test7 

結果:

test2 
test3 
test5 test6 
test7 

另外,我怎麼能保存從上面的文件只有最後一個字,即

RESULT2:

test2 
test3 
test6 
test7 

回答

1

一個sed的解決方案:如果該行包含一個空間,我們知道有幾個單詞,所以我們刪除了一切,包括第一個空格。

$ sed '/ /s/[^ ]* //' infile 
test2 
test3 
test5 test6 
test7 

相反,我們再次檢查空間;如果有的話,我們會刪除一切,包括最後一個空格(.*是貪婪的)。

$ sed '/ /s/.* //' infile 
test2 
test3 
test6 
test7 

如果字不是由空格分隔,但是,例如翼片,就可以替換上面[[:blank:]]的空間的所有實例:

sed '/[[:blank:]]/s/[^[:blank:]]*[[:blank:]]//' infile 

等等。

檢查的空間/空白不是絕對必要的:如果沒有一個,替換沒有做任何事情,所以

sed 's/[^ ]* //' infile 

sed 's/.* //' infile 

也將工作,但在我看來,檢查空白表達意圖更清楚。

1

刪除每個l的第一個單詞國家統計局,

cut -d' ' -f2- fileName 

要得到每行的最後一個字,並將其保存在一個新的文件,

awk '{print $NF}' fileName > newFileName