Удалите пустые строки из txtfiles, удалите пробелы из начала и конца строки

Что было бы лучше:

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

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

Ответ 1

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

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

Ответ 2

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

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

Ответ 3

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

Чтобы заменить рекурсивно, вы можете использовать новую функцию globbing (например, **/*.txt).

Ответ 4

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

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

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

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