代替行にsedを使用する

代替行にsedを使用する

次のパターンのファイルがあります。

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

ダッシュを含む各行の先頭にあるすべてのコンテンツが削除されます。他にもダッシュのない行では正規表現が一致しないため、置換を行わずに行をそのままにします。


必要なものが他のすべての行に変換を適用する場合は、コマンドsedn「次へ」を意味)を使用して1行をスキップしますが、それでも出力に送信できます。

これは実際に偶数行で作業したいと思います(あなたの例ではブロック間に空の行があり、コピーして貼り付けるアーティファクトであると仮定します)、質問のタイトル「代替行」が実際に欲しいものであるとします。 .)

このコマンドは、偶数行にのみ正規表現を適用します。

sed 'n;s/^[^A-Z]*//' file.txt

おすすめ記事