
次のテキストを含む複数のファイルがあります。
20~02~19~05-01-52
2249\\\2249\\\2249\\\2249\\\2249\\\2249\\\2248\\\
改行を置き換えるためにsedまたは他のLinuxコマンドを使用したいと思います\\\
。
答え1
sed 's|\\\\\\|\n|g' filename
GNUを使用している場合は可能です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' は自動印刷を防止します。