sedを使用して空行を残さずに行を削除する方法は?

sedを使用して空行を残さずに行を削除する方法は?

ファイル.txt:

line: this-is-some-text
line2: this-is-some-other-text

例:

sed 's#line:.*##g' File.txt

line2: this-is-some-other-text

ご覧のとおり、最初の行は削除されましたが、空白行が残ります。

sed削除時に空白行が残らないようにすることはできますか?

答え1

あなたはそれを使用することができますD代わりに elete コマンドS代替コマンド:

$ cat File.txt 
line: this-is-some-text
line2: this-is-some-other-text

$ sed '/line:/d' File.txt
line2: this-is-some-other-text

式を行の先頭に固定することを検討できます(例:)sed '/^line:/d' File.txt

または、リバースマッチングのためにgrepを検討してくださいgrep -v '^line:' File.txt

答え2

awkを使用してください:

$ awk '/line:/{next}1'
$ awk '/^line:/{next}1' #For pattern at the start of line

編集の使用:

$ printf '%s\n' 'v/line:/p'  | ed -s file
$ printf '%s\n' 'v/^line:/p'  | ed -s file # For pattern at the start of line

関連情報