2017-08-14 31 views
0

說我有一個文本文件,如下所示:如何替換最後一個字符並將字符插入字符串的開頭?

accio. 
aguamenti. 
alohomora. 
aparecium. 

我希望得到的是:

-accio! 
-aguamenti! 
-alohomora! 
-aparecium! 

這是我已經試過:

sed 's/.*[a-z]/-&!/g' 

哪產量:

-accio!. 
-alohomora!. 

這是非常接近,但顯然不是我所需要的。幫幫我?

回答

1

你需要使用一個捕獲組在最後排除字符:

$ sed 's/^\(.*\)\.$/-\1!/' file 

或者做兩個步驟:

$ sed -e 's/\.$/!/' -e 's/.*/-&/' file 
+0

正是我需要的,謝謝! – Raux

0

您可以使用捕獲組:

sed -E 's/^(.*).$/-\1!/' file 

-accio! 
-aguamenti! 
-alohomora! 
-aparecium! 

如果您的訂單中包含的最後一封信之前只有小寫英文字母作爲您的問題,那麼你也可以使用:

sed -E 's/^([a-z]+).*$/-\1!/' file 
1

在兩個步驟:

$ sed 's/^/-/;s/.$/!/' infile 
-accio! 
-aguamenti! 
-alohomora! 
-aparecium! 

第一條命令用「替換」每行的開頭,有效插入它;第二個命令用!替換最後一個字符。

相關問題