Удалите пустые строки в текстовом файле через grep

FILE:

hello

world

foo

bar

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

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

FILE:

hello
world
foo
bar

Ответ 1

grep . FILE


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

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

Ответ 2

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

grep -v -e '^$'

Ответ 3

with awk, just check for number of fields. no need regex

$ more file
hello

world

foo

bar

$ awk 'NF' file
hello
world
foo
bar

Ответ 4

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

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

Ответ 5

Попробуйте следующее: sed -i '/^[ \t]*$/d' file-name

Он удалит все пустые строки, имеющие какие-либо значения. белых пробелов (пробелов или вкладок), то есть (0 или более) в файле.

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

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

Ответ 6

grep '^..' my_file

Пример

THIS

IS

THE

FILE

EOF_MYFILE

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

THIS
IS
THE
FILE
EOF_MYFILE

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

THIS

IS

THE

FILE

EOF_MYFILE

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

THIS
IS
THE
FILE
EOF_MYFILE

Ответ 7

Попробуйте 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

Ответ 8

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

Удаляет все незаполненные строки:

perl -ne 'print if /./' file

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

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

Изменение, которое редактирует оригинал и делает файл .bak:

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

Ответ 9

Если удаление пустых строк означает строки, включающие любые пробелы, используйте:

grep '\S' FILE

Например:

$  printf "line1\n\nline2\n \nline3\n\t\nline4\n" > FILE
$  cat -v FILE
line1

line2

line3

line4
$  grep '\S' FILE
line1
line2
line3
line4
$  grep . FILE
line1
line2

line3

line4

Смотрите также: