1
sed
文字列の一致後の次の2つのオカレンスを置き換えるオプションを見つけることができません。基本的には、これらのCSVファイルでは、jobcd
の後の最初の2つの即時パイプ|
文字を1フィールドにする必要があるため、置き換えようとしています。パイプ文字の次の2つの発生を置換するためにsedを使用
私は、これはすべての単一|
文字を置き換え実現する前に...ここでsed -i 's/|/%/g' data.csv
は、これらのCSVファイルからのサンプル行ですが、これを実行することができた:
-1|7149636|2015-02-14 00:42:23|20150214|4223||Delete Future Batch||jobcd: %PAL| Cnt:60|||1900-01-01 00:00:00|0|||0||||0|0|0|.000
私が取得しようとしています
-1|7149636|2015-02-14 00:42:23|20150214|4223||Delete Future Batch||jobcd: %PAL% Cnt:60%||1900-01-01 00:00:00|0|||0||||0|0|0|.000
編集:代わり%
の、私はと交換しようとしているその行が見えるようにので、私はのように見えるように出力を取得しようとしている:
-1|7149636|2015-02-14 00:42:23|20150214|4223||Delete Future Batch||jobcd: %PAL\| Cnt:60\|||1900-01-01 00:00:00|0|||0||||0|0|0|.000
おかげで、私はちょうど私が\ 'の置換文字列を使用する必要があることに気づい|代わりに'の ' % '。私は 'sed -i -E /(\ | jobcd)([^ |] *)\ |([^ |] *)\ |/\ 1 \ 2 \ | \ 3 \ |/g"を試しましたが、それはうまくいきませんでした。適切な構文は何でしょうか? – simplycoding
あなたは 'sed -E '/(\ | jobcd)([^ |] *)\ |([^ |] *)\ |/\ 1 \ 2 \\ | \ 3を使って\を二重にエスケープする必要があります\\ |/g '<<< "$ s" ' – anubhava
これはうまくいったのですか? – anubhava