Awk

如何確保文件每行的最後一個字元以單引號字元結尾

  • March 30, 2022

我有一個有幾行的文件。

我希望更新文件,同時確保文件每一行的最後一個可見字元是單引號'。如果沒有,那麼我們應該在每行的末尾添加單引號。

如果單引號是一行中的最後一個字元,則保持原樣。

貓測試.txt

fahsjhjkhkjhjhajkhjf
afasfsfsfffsfasf'
aaffa' sfff
wfafsfsaffs'
fsafsfs'afffafsasf

預期輸出:

fahsjhjkhkjhjhajkhjf'
afasfsfsfffsfasf'
aaffa' sfff'
wfafsfsaffs'
fsafsfs'afffafsasf'

sed表達式s/[^']$/&'/在以非單引號字元結尾的任何行的末尾插入單引號。

在外殼中:

sed "s/[^']$/&'/" file

由於表達式包含單引號,因此我選擇將表達式寫在雙引號中。要進行就地編輯,如果它完全實現了這個非標準選項,請使用sed它的選項。-i

要在空行上也插入單引號,您可以使用專門針對空行的額外表達式,或者您始終可以在行尾插入單引號,然後替換由此產生的任何雙單引號。

即,要麼

sed -e "s/[^']$/&'/" -e "/^$/s//'/" file

或者

sed -e "s/$/'/" -e "s/''$/'/" file

引用自:https://unix.stackexchange.com/questions/697021