Удаление пустых строк в текстовом файле с помощью grep
-
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