Я хочу удалить все пустые строки из файла. Даже если строка содержит пробелы или символы табуляции, ее также следует удалить.
источник
Я хочу удалить все пустые строки из файла. Даже если строка содержит пробелы или символы табуляции, ее также следует удалить.
Просто grep
для незаполненных:
grep '[^[:blank:]]' < file.in > file.out
[:blank:]
внутри символьного диапазона ( [...]
) называется классом символов POSIX. Есть несколько таких [:alpha:]
, как [:digit:]
... [:blank:]
соответствует горизонтальному пробелу (в локали POSIX это пробел и табуляция, но в других локалях их может быть больше, как все символы Unicode с горизонтальным интервалом в локалях UTF8), в то время как [[:space:]]
совпадает с горизонтальным и вертикальным белым пробелы (такие же, как [:blank:]
плюсы, такие как вертикальная табуляция, подача формы ...).
grep '[:blank:]'
Вернуть бы те строки , которые содержат любой из символов, :
, b
, l
, a
, n
или k
. Классы символов распознаются только внутри [...]
, а ^
внутри - [...]
отрицает множество. Так [^[:blank:]]
означает любой символ, кроме пустых.
$
конец строки?[^[:blank:]]$
будет соответствовать только строки, которые заканчиваются непустым. Мы хотим, чтобы в любом местеgrep -E '\S'
не работал?Вот
awk
решение:С
awk
,NF
устанавливается только на непустые строки. Когда это условие соответствует,awk
действие по умолчанию, котороеprint
будет печатать всю строку.источник
Как насчет:
или
т.е.
Для каждой строки подставьте:
^
")[[:blank:]]
") ноль или более раз ("*
")$
")Дополнительная информация о :: blank :: и других специальных символах на http://www.zytrax.com/tech/web/regex.htm#special
источник
[[:space:]]
включает в себя вкладки. Если это не так, ваше регулярное выражение не будет выполнено, если после табуляции будет пробел.wctype(3)
Иisalpha(3)
страница руководства описывают то , что классы символов будут совпадать.Вы можете использовать
sed
команду для удаления пустых строк:Эта команда удаляет все пустые строки из файла «в»
источник
Похоже, я нашел не так быстро, но наконец-то смешно:
| xargs -L1
источник
Попробуйте ex -way:
Для нескольких файлов (редактирование на месте):
Примечание:
:bufdo
команда не POSIX .Без изменения файла (просто выведите на стандартный вывод):
источник
Используйте следующую команду:
который удаляет все строки, включая пробелы или символы табуляции.
В противном случае для удаления, не включая строки с пробелами / табуляциями, используйте:
Например:
Смотрите также:
sed
: Удалить пустые строки с помощью sedawk
: удалить пустые строки с помощью awkисточник