Удалить пустые строки из txtfiles, удалить пробелы в начале и конце строки - PullRequest
20 голосов
/ 19 декабря 2011

Какой из них будет лучше:

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

Кроме того, как мне удалить пробелы в начале и конце каждой строки в текстовом файле?

Ответы [ 4 ]

36 голосов
/ 19 декабря 2011
$ sed 's/^ *//; s/ *$//; /^$/d' file.txt

`s/^ *//`  => left trim
`s/ *$//`  => right trim
`/^$/d`    => remove empty line
4 голосов
/ 16 января 2018

Еще более простой метод с использованием awk.

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

awk 'NF' - это удалит все пустые / пустые строки.

awk '{$1=$1;print}' - Это удалит только конечные пробелы (как левые, так и правые)

4 голосов
/ 20 декабря 2011

Это может работать для вас:

sed -r 's/^\s*(.*\S)*\s*$/\1/;/^$/d' file.txt
2 голосов
/ 30 мая 2015

Аналогично, но с использованием редактора 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).

...