awk は '||' をフィールド区切り文字として使用しません。

awk は '||' をフィールド区切り文字として使用しません。

複数の文字区切り文字を切り捨てるためにawkを使用しようとしています。

echo 'f1##f2' |awk -F '##' '{print $2}'

しかしf2

echo 'f1||f2' |awk -F '||' '{print $1}'

印刷f1||f2

何が起こっているのかを説明できる人はいますか?

ベストアンサー1

あなたの場合、縦棒は|特殊文字と見なされ、エスケープする必要があります。

echo "f1||f2" |awk -F'\\|\\|' '{print $1}'
f1

|あるいは、文字クラスに入れることもできます。

echo "f1||f2||f3" |awk -F'[|]{2}' '{print $3}'
f3

おすすめ記事