web-dev-qa-db-ja.com

テキストファイルから空の行を削除し、行の先頭と末尾からスペースを削除します

どちらが良いでしょう:

sed -e '/^$/d' *.txt
sed 'g/^$/d' -i *.txt

また、テキストファイルの各行の最初と最後からスペースを削除するにはどうすればよいですか?

21
alvas
$ sed 's/^ *//; s/ *$//; /^$/d' file.txt

`s/^ *//`  => left trim
`s/ *$//`  => right trim
`/^$/d`    => remove empty line
38
kev

Awkを使用したさらに簡単な方法。

cat filename.txt | awk 'NF' | awk '{$1=$1;print}'

awk 'NF'-これにより、すべての空白/空の行が削除されます。

awk '{$1=$1;print}'-これにより、末尾の空白のみが削除されます(左右両方)

5
M.S.Arun

これはあなたのために働くかもしれません:

sed -r 's/^\s*(.*\S)*\s*$/\1/;/^$/d' file.txt
4
potong

同様ですが、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)。

2
kenorb