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