次の文字列を見つけて置き換えようとしています。
~|~\N
pete@computer:~$ cat test.txt
one~|~two~|~\Nthree
パイプキャラクターが特殊キャラクターであることを知って脱出しました。以下のエスケープ文字もエスケープ処理しました。私の試みは次のとおりです。
pete@computer:~$ awk '{gsub(/~\\|~\\\N$/, "~|~"); print}' test.txt
one~|~two~|~|~Nthree
予想される結果は次のとおりです。
one~|~two~|~three
しかし、そこに「|~」が追加で表示されます。私は何が間違っていましたか?
ありがとう、フィート
ベストアンサー1
awk '{ gsub(/~\|~\\N/, "~|~") }1' infile
エスケープする必要がある特殊文字正規表現$
sub()/gsub()/gensub() 関数を使用するには、マッチエンドアンカーも削除する必要があります。
次の出力を/~\\|~\\\N$/
使用する~\
場合:~\N
$
~\
~\
~|~
one~|~two~|~|~Nthree
^^^