說我有一個文本文件,如下所示:如何替換最後一個字符並將字符插入字符串的開頭?
accio.
aguamenti.
alohomora.
aparecium.
我希望得到的是:
-accio!
-aguamenti!
-alohomora!
-aparecium!
這是我已經試過:
sed 's/.*[a-z]/-&!/g'
哪產量:
-accio!.
-alohomora!.
這是非常接近,但顯然不是我所需要的。幫幫我?
說我有一個文本文件,如下所示:如何替換最後一個字符並將字符插入字符串的開頭?
accio.
aguamenti.
alohomora.
aparecium.
我希望得到的是:
-accio!
-aguamenti!
-alohomora!
-aparecium!
這是我已經試過:
sed 's/.*[a-z]/-&!/g'
哪產量:
-accio!.
-alohomora!.
這是非常接近,但顯然不是我所需要的。幫幫我?
你需要使用一個捕獲組在最後排除字符:
$ sed 's/^\(.*\)\.$/-\1!/' file
或者做兩個步驟:
$ sed -e 's/\.$/!/' -e 's/.*/-&/' file
您可以使用捕獲組:
sed -E 's/^(.*).$/-\1!/' file
-accio!
-aguamenti!
-alohomora!
-aparecium!
如果您的訂單中包含的最後一封信之前只有小寫英文字母作爲您的問題,那麼你也可以使用:
sed -E 's/^([a-z]+).*$/-\1!/' file
在兩個步驟:
$ sed 's/^/-/;s/.$/!/' infile
-accio!
-aguamenti!
-alohomora!
-aparecium!
第一條命令用「替換」每行的開頭,有效插入它;第二個命令用!
替換最後一個字符。
正是我需要的,謝謝! – Raux