Awk
通過從另一個文件中讀取的分隔符分割每一行,並將所有分割的單詞複合儲存在結果文件中
我想通過文件
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[...]
是范圍運算符,除非在開始或結束處。