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

StackOverflow https://stackoverflow.com/questions/1611809

  •  05-07-2019
  •  | 
  •  

Вопрос

FILE:

hello

world

foo

bar

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

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

FILE:

hello
world
foo
bar
Это было полезно?

Решение

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 -way:

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

Вариант, который редактирует оригинал и создает файл .bak:

perl -i.bak -ne 'print if ! /^\s*$/' file
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top