Удаление пустых строк в текстовом файле с помощью команды grep
FILE
:
hello
world
foo
bar
как можно, когда удалить все пустые новые строки в этом FILE
?
вывод команды:
FILE
:
hello
world
foo
bar
8 ответов:
grep . FILE
(и если вы действительно хотите сделать это в sed, то:
sed -e /^$/d FILE
)(и если вы действительно хотите сделать это в awk, то:
awk /./ FILE
)
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