我有一個txt文件,我想要使用sed,awk,grep或任何組合刪除文件中每行的最後一個字符串。從文件中的每一行中刪除最後一個字符串
我想我需要類似sed'$ s /'的東西。但不能完全弄清楚。謝謝。
實施例:
fab foo bar
fab foo fab
fab foo foo
希望的輸出。
fab foo
fab foo
fab foo
請注意,最後一個字符串將在每一行中不同。
我有一個txt文件,我想要使用sed,awk,grep或任何組合刪除文件中每行的最後一個字符串。從文件中的每一行中刪除最後一個字符串
我想我需要類似sed'$ s /'的東西。但不能完全弄清楚。謝謝。
實施例:
fab foo bar
fab foo fab
fab foo foo
希望的輸出。
fab foo
fab foo
fab foo
請注意,最後一個字符串將在每一行中不同。
如何
awk '{$NF=""}1' file
sed -r 's/[[:space:]]*[^[:space:]]+[[:space:]]*$//' file
上面的內容會刪除每行上的最後一個非空格字符串以及該字符串之前或之後的任何空格。
+1:Aah好的想法去除最後一個字段之前的剩餘空間。 – 2014-09-25 04:04:51
你可以試試下面的sed命令,
sed 's/ \+[^ ]\+$//' file
通過perl的,
perl -pe 's/\S+\s*$//' file
還去除最後一個字前面有一個空格。
perl -pe 's/\s+\S+\s*$//' file
另一種方法是打印各個領域,除了最後:
awk '
{
for(i=1; i<NF; i++)
{
printf "%s ", $i;
}
printf "\n";
}' file
awk '{if(NF)NF--}1' file
爲NF不能是需要的條件分配一個負值,空行已經有NF == 0
。如果在輸入中沒有空行,那麼awk 'NF--' file
就足夠了
+1,但請注意,這也會修改空格 – 2014-09-25 04:06:41
我喜歡這個答案,因爲它的簡單性,因爲大多數答案的工作。不幸的是,我沒有意識到一些行實際上有多個我想要刪除的字符串。但是在時間到了的時候會參考這篇文章。謝謝。 – user2631279 2014-09-25 04:13:02
這不僅僅是刪除行上的最後一個字符串,它會重新編譯整個記錄並添加尾隨空格。 – 2014-09-25 04:27:18