sed は '\\\' を改行文字に置き換えます。 Linux

sed は '\\\' を改行文字に置き換えます。 Linux

次のテキストを含む複数のファイルがあります。

20~02~19~05-01-52
2249\\\2249\\\2249\\\2249\\\2249\\\2249\\\2248\\\

改行を置き換えるためにsedまたは他のLinuxコマンドを使用したいと思います\\\

答え1

sed 's|\\\\\\|\n|g' filenameGNUを使用している場合は可能ですsed

POSIX が必要な場合は、sed次のように動作します(少し脱出が必要です!)。

sed 's|\\\\\\|\
|g' filename

答え2

ここではPerlを使用しています。なぜなら、Perlはより進化した正規表現を持ち、簡単に繰り返しをサポートできるからです。したがって、次のようになります。

$ perl -pe 's/\\{3}/\n/g' file 
20~02~19~05-01-52
2249
2249
2249
2249
2249
2249
2248

-pe「-eで指定されたスクリプトを適用した後、各入力行を印刷します」を意味します。スクリプト自体は、単に\3のすべての項目を改行文字に置き換えます。私たちは必要なので避けるべきで\\はなく、避けるべきです。\\

これをサポートする場合sed(GNU sedがサポートする)、同じアプローチを使用できます。

$ sed -E 's/\\{3}/\n/g' file 
20~02~19~05-01-52
2249
2249
2249
2249
2249
2249
2248

答え3

そしてawk

awk '{gsub(/\\{3}/, RS)}1' file

答え4

sedを使用してください:sed -n 's/\\\\\\/\n/g; p' filename.txt

セミコロンの後に「p」があることが重要です。それ以外の場合、置換が発生しなかった最初の行は印刷されません。バックスラッシュは6つです。なぜなら、3つのバックスラッシュは、持っている3つのバックスラッシュのエスケープ文字として使用されるからです。 「g」はグローバルを意味します。 '-n' は自動印刷を防止します。

関連情報