Awk

通過從另一個文件中讀取的分隔符分割每一行,並將所有分割的單詞複合儲存在結果文件中

  • July 4, 2020

我想通過文件names中的每個分隔符從文件中拆分每一行,delim並將唯一的單詞化合物儲存到結果文件compounds中。未拆分的行names應從輸出文件中刪除。只有 4 個分隔符: -'+

重要提示names文件包含 utf-8 編碼的人名。

$ cat delims
(space is here)
-
'
+
$ cat names
Tania
Günter
Abdel+Aziz
Abdel'Piza
Märie-Pierre

輸出化合物文件應該是(排序無關緊要):

Abdel
Aziz
Piza
Märie
Pierre

如果您有一個允許欄位分隔符的擴展正則表達式的 awk,那麼您可以執行類似的操作

$ awk '
   BEGIN{FS=""; while((getline < "delim") > 0){FS = FS=="" ? $0 : FS"|"$0}}
   NF>1 {for(i=1;i<=NF;i++) print $i}
' names
Abdel
Aziz
Abdel
Piza
Märie
Pierre

注意:可以說使用字元集[ '+-]而不是正則表達式替換會更乾淨 |'|+|-(並且還可以消除可能的混淆+是文字還是正則表達式量詞)。但是,它需要仔細改組條目,因為-inside[...]是范圍運算符,除非在開始或結束處。

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