Удаление пустых строк в текстовом файле с помощью команды grep


FILE:

hello

world

foo

bar

как можно, когда удалить все пустые новые строки в этом FILE?

вывод команды:

FILE:

hello
world
foo
bar
8 62

8 ответов:

grep . FILE


(и если вы действительно хотите сделать это в sed, то:sed -e /^$/d FILE)

(и если вы действительно хотите сделать это в awk, то: awk /./ FILE)

попробуйте следующее:

grep -v -e '^$'
with awk, just check for number of fields. no need regex

$ more file
hello

world

foo

bar

$ awk 'NF' file
hello
world
foo
bar

вот решение, которое удаляет все строки, которые либо пустые, либо содержат только пробелы:

grep -v '^[[:space:]]*$' foo.txt

попробуйте это: sed -i '/^[ \t]*$/d' file-name

он удалит все пустые строки, имеющие нет. пробелов (пробелов или вкладок) т. е. (0 или более) в файле.

Примечание: В квадратной скобке есть "пробел", за которым следует "\t".

модификатор -i заставит записать обновленное содержимое обратно в файл. Без этого флага вы можете увидеть пустые строки были удалены на экране, но фактический файл не будет затронут.

grep '^..' my_file

пример

THIS

IS

THE

FILE

EOF_MYFILE

он дает в качестве выходных данных только строки с не менее чем 2 символами.

THIS
IS
THE
FILE
EOF_MYFILE

Смотрите также результаты grep '^' my_file выходы

THIS

IS

THE

FILE

EOF_MYFILE

а также с grep '^.' my_file выходы

THIS
IS
THE
FILE
EOF_MYFILE

попробовать ex-образом:

ex -s +'v/\S/d' -cwq test.txt

для нескольких файлов (редактировать на месте):

ex -s +'bufdo!v/\S/d' -cxa *.txt

без изменения файла (просто распечатать на стандартном выходе):

cat test.txt | ex -s +'v/\S/d' +%p +q! /dev/stdin

Perl может быть излишним, но он работает так же хорошо.

удаляет все строки, которые совершенно пустым:

perl -ne 'print if /./' file

удаляет все строки, которые полностью пусты или содержат только пробелы:

perl -ne 'print if ! /^\s*$/' file

вариация, которая редактирует оригинал и делает a .бак файл:

perl -i.bak -ne 'print if ! /^\s*$/' file