FILE
:
hello
world
foo
bar
Как можно удалить все пустые новые строки в этом FILE
?
Вывод команды:
FILE
:
hello
world
foo
bar
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
он выводит только выходные строки с не менее чем двумя символами.
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
Если удаление пустых строк означает строки, включающие любые пробелы, используйте:
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
Смотрите также: