次のパターンのファイルがあります。
12345.ABC9998
12345555.abc:ffr.abc-MKDHJKSJJDOKSOKSDCKJODCKJ
12345.ABC9998
12345555.abc:ffr.abc-MKDHJKSJJDOKSOKSDCKJODCKJ
ダッシュの前のすべての項目を削除し、2行目の各行にダッシュ自体を含めたいです。
予想出力:
12345.ABC9998
MKDHJKSJJDOKSOKSDCKJODCKJ
12345.ABC9998
MKDHJKSJJDOKSOKSDCKJODCKJ
私はsed 's/^[^A-Z]*//' file.txt
これが可能であることを知っていますが、すべての行に対して動作します。目的の行(他のすべての行)でのみ機能するように編集するにはどうすればよいですか?
ベストアンサー1
ダッシュを含む行でのみ作業したい場合(あなたの例ではそうです)、次はうまくいきます。
sed 's/^.*-//' file.txt
ダッシュを含む各行の先頭にあるすべてのコンテンツが削除されます。他にもダッシュのない行では正規表現が一致しないため、置換を行わずに行をそのままにします。
必要なものが他のすべての行に変換を適用する場合は、コマンドsed
(n
「次へ」を意味)を使用して1行をスキップしますが、それでも出力に送信できます。
これは実際に偶数行で作業したいと思います(あなたの例ではブロック間に空の行があり、コピーして貼り付けるアーティファクトであると仮定します)、質問のタイトル「代替行」が実際に欲しいものであるとします。 .)
このコマンドは、偶数行にのみ正規表現を適用します。
sed 'n;s/^[^A-Z]*//' file.txt