sed は、特定の行番号の後の空の行を削除します。

sed は、特定の行番号の後の空の行を削除します。

ファイルの最後まで、3行目以降のすべての空行を削除しようとしています。

cat ${File}
1

2
3


4

5

5



6
7



8
9


sed -e '3,${s~^$~~g}' ${File}
1

2
3


4

5

5



6
7



8
9

観察する:出力に変化はありません。

希望の出力

1

2
3
4
5
5
6
7
8
9

どんな提案がありますか?

ベストアンサー1

努力する:

sed '4,$ {/^$/d}' infile

4行目からファイルの終わりまで空白行を削除します。

コマンドの問題は、空の行を空の文字列s~^$~~g(と同じs~^$~~)に置き換え、それを削除しないことです。

注:デフォルトのスラッシュ以外の区切り文字を使用しているため、/このスタイルを使用するには、~^$~d最初の区切り文字をエスケープして正規表現の一部ではないことを~示す必要があります。sed

sed -e '4,${ \~^$~d }' infile

バラよりman sed「住所」から:

\氏正規表現 正規表現 regexp に一致する行に一致します。これどんな文字でも可能です。


空行と空白(タブ/スペース)のみを含む行を削除するには、次のようにします。

sed '4,${ /^[[:blank:]]*$/d }' infile

おすすめ記事