複数の文字区切り文字を切り捨てるために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