別のファイルの区切り読みで各行を分割し、すべての分割単語の組み合わせを結果ファイルに保存します。

別のファイルの区切り読みで各行を分割し、すべての分割単語の組み合わせを結果ファイルに保存します。

names私はファイルの各区切り文字でファイルの各行を分割しdelim、独自の単語化合物を結果ファイルに保存したいと思いますcompoundsnames分割されていない行は出力ファイルから削除する必要があります。区切り記号は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

ベストアンサー1

フィールド区切り文字が正規表現を拡張できるようにする 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

注:[ '+-]正規表現の代わりに文字セットを使用する方がきれいです |'|+|-(また、+リテラル数量子または正規表現数量子が使用されているかどうかを混乱させる可能性もなくなります)。ただし、-内部的に[...]開始または終了を除く範囲演算子があるため、項目を慎重に混在させる必要があります。

おすすめ記事