Я пробовал grep -v '^$'
в Linux, и это не сработало. Этот файл поступает из файловой системы Windows.
Удалите пустые строки с помощью grep
Ответ 1
Попробуйте следующее:
grep -v -e '^$' foo.txt
Параметр -e
позволяет шаблонам регулярных выражений для сопоставления.
Одиночные кавычки вокруг ^$
заставляют его работать для Cshell. Другие оболочки будут довольны либо одиночными, либо двойными кавычками.
UPDATE: это работает для меня с файлом с пустыми строками или "всем белым пространством" (например, с линиями строк с окончанием строки стиля "\ r\n" ), тогда как выше всего удаляются файлы с пустыми строками и стилем unix окончания строки:
grep -v -e '^[[:space:]]*$' foo.txt
Ответ 2
Держите его простым.
grep . filename.txt
Ответ 3
$ dos2unix file
$ grep -v "^$" file
Или просто просто awk
awk 'NF' file
Если у вас нет dos2unix, вы можете использовать такие инструменты, как tr
tr -d '\r' < "$file" > t ; mv t "$file"
Ответ 4
grep -v "^[[:space:]]*$"
The -v makes it print lines that do not completely match
===Each part explained===
^ match start of line
[[:space:]] match whitespace- spaces, tabs, carriage returns, etc.
* previous match (whitespace) may exist from 0 to infinite times
$ match end of line
Запуск кода -
$ echo "
> hello
>
> ok" |
> grep -v "^[[:space:]]*$"
hello
ok
Чтобы понять, как это работает, я рекомендую читать регулярные выражения. http://www.regular-expressions.info/tutorial.html
Ответ 5
Вы можете удалить пустую строку с помощью этого примера:
grep . filename.txt
Ответ 6
Я предпочитаю использовать egrep
, хотя в моем тесте с подлинным файлом с пустой строкой ваш подход работал нормально (хотя без кавычек в моем тесте). Это тоже сработало:
egrep -v "^(\r?\n)?$" filename.txt
Ответ 7
Пробовал трудно, но это, похоже, работает (предполагая, что \r
кусает вас здесь)
printf "\r" | egrep -xv "[[:space:]]*"
Ответ 8
Аналогично приведенным выше ответам
grep -v -e '^$' foo.txt
Здесь grep -e означает расширенную версию grep. '^ $' означает отсутствие символа между ^ (начало строки) и $(конец строки). '^' и '$' являются регулярными символами.
Таким образом, команда grep -v будет печатать все строки, которые не соответствуют этому шаблону (без символов между ^ и $).
Таким образом удаляются пустые пустые строки
Ответ 9
Если у вас есть последовательности из нескольких пустых строк в строке и требуется только одна пустая строка для каждой последовательности, попробуйте
grep -v "unwantedThing" foo.txt | cat -s
cat -s
подавляет повторяющиеся пустые выходные строки.
Ваш результат будет идти от
match1
match2
к
match1
match2
Три пустые строки в исходном выходе будут сжаты или "сжаты" в одну пустую строку.
Ответ 10
grep pattern filename.txt | Uniq
Ответ 11
awk 'NF' file-with-blank-lines > file-with-no-blank-lines
Ответ 12
Использование Perl:
perl -ne 'print if /\S/'
\S
означает совпадение непустых символов.
Ответ 13
вот еще один способ удаления белых линий и строк, начинающихся с знака #. Я думаю, что это очень полезно для чтения конфигурационных файлов.
[[email protected] ~]# cat /etc/sudoers | egrep -v '^(#|$)'
Defaults requiretty
Defaults !visiblepw
Defaults always_set_home
Defaults env_reset
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR
LS_COLORS"
root ALL=(ALL) ALL
%wheel ALL=(ALL) ALL
stack ALL=(ALL) NOPASSWD: ALL
Ответ 14
egrep -v "^\s\s +"
egrep уже выполняет регулярное выражение, а \s - пробел.
+ дублирует текущий шаблон.
The ^ для начала