ファイルの最後まで、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