awk - 特殊文字列の検索と置換

awk - 特殊文字列の検索と置換

次の文字列を見つけて置き換えようとしています。

~|~\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
           ^^^  

おすすめ記事