2016-05-14 18 views
0

複数の単語が含まれている場合、ファイルの各行から最初の単語を削除するにはどうすればよいですか?条件付きで最初の単語を削除する

ファイル:

test test2 
test3 
test4 test5 test6 
test7 

結果:また

test2 
test3 
test5 test6 
test7 

、どのように私はつまり、ファイルの上からだけで最後の単語を保存することができ、

結果2:

test2 
test3 
test6 
test7 

答えて

1

SEDソリューションを各行の最後の単語を取得し、新しいファイルに保存するには、次の行にスペースが含まれている場合、我々はいくつかの単語があることを知っていますしたがって、最初のスペースまでのすべてを削除します。

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

もう一度、スペースを確認します。 1つがある場合は、最後のスペースまでをすべて削除します(.*は貪欲です)。

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

単語はスペースで区切られていないが、例えば、タブのために、我々は[[:blank:]]と上の空間のすべてのインスタンスを置き換えることができた場合:

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

エトセトラ。

スペース/空白の確認は厳密には必要ではない:1がない場合、置換は何もしませんので、

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

も働くだろう
sed 's/.* //' infile 

、私の意見では、空白をチェックすると、その意図がより明確に表現されます。

1

各lの最初の単語を削除するには伊根、

cut -d' ' -f2- fileName 

は、

awk '{print $NF}' fileName > newFileName 
関連する問題