どちらが良いでしょう:
sed -e '/^$/d' *.txt
sed 'g/^$/d' -i *.txt
また、テキストファイルの各行の最初と最後からスペースを削除するにはどうすればよいですか?
$ sed 's/^ *//; s/ *$//; /^$/d' file.txt
`s/^ *//` => left trim
`s/ *$//` => right trim
`/^$/d` => remove empty line
Awkを使用したさらに簡単な方法。
cat filename.txt | awk 'NF' | awk '{$1=$1;print}'
awk 'NF'
-これにより、すべての空白/空の行が削除されます。
awk '{$1=$1;print}'
-これにより、末尾の空白のみが削除されます(左右両方)
これはあなたのために働くかもしれません:
sed -r 's/^\s*(.*\S)*\s*$/\1/;/^$/d' file.txt
同様ですが、ex
エディターを使用します:
ex -s +"g/^$/de" +"%s/^\s\+//e" +"%s/\s\+$//e" -cwq foo.txt
複数のファイルの場合:
ex -s +'bufdo!g/^$/de' +'bufdo!%s/^\s\+//e' +'bufdo!%s/\s\+$//e' -cxa *.txt
再帰的に置き換えるには、 新しいグロブオプション (例:**/*.txt
)。