Я пробовал grep -v '^$'
в Linux, и это не сработало. Этот файл поступает из файловой системы Windows.Удалить пустые строки с помощью grep
ответ
Попробуйте следующее:
grep -v -e '^$' foo.txt
Опция -e
позволяет шаблоны регулярных выражений для согласования.
Одиночные кавычки около ^$
заставляют его работать на Cshell. Другие оболочки будут довольны либо одиночными, либо двойными кавычками.
UPDATE: Это работает для меня с файлом с пустыми строками или «всем белым пространством» (например, оконными линиями с окончанием строки стиля «\ r \ n»), тогда как выше всего удаляются файлы с пустыми строками и unix стиль линия окончания:
grep -v -e '^[[:space:]]*$' foo.txt
Я предпочитаю использовать egrep
, хотя в моем тесте с подлинным файлом с пустой строкой вашего подход работал отлично (хотя и без кавычек в моем тесте). Это работало слишком:
egrep -v "^(\r?\n)?$" filename.txt
Пробовал, что. Пустые строки все еще отображаются. Может ли это быть из-за того, что файл был сделан в Windows? –
Пробовал трудно, но это похоже на работу (при условии \r
кусает вас здесь)
printf "\r" | egrep -xv "[[:space:]]*"
Это работает, если я заменил первую часть на выход из файла. –
$ dos2unix file
$ grep -v "^$" file
Или просто AWK
awk 'NF' file
Если вы не У вас есть dos2unix, тогда вы можете использовать такие инструменты, как tr
tr -d '\r' < "$file" > t ; mv t "$file"
Не удается найти программу dos2unix. Это для Windows? команда ask также не работает. –
спросить? Нет, это 'awk'. – iconoclast
Хорошая мысль о преобразовании в конец строки в стиле UNIX, в противном случае регулярные выражения могут работать не так, как ожидалось. Ничто здесь не работало для меня, пока я не переработал окончание строки. –
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
Запуск code-
$ echo "
> hello
>
> ok" |
> grep -v "^[[:space:]]*$"
hello
ok
Чтобы понять больше о том, как/почему это работает, я рекомендую читать на регулярных выражениях. http://www.regular-expressions.info/tutorial.html
Как и почему это работает? Ваш ответ был бы намного лучше, если бы вы могли объяснить. Например, ваше регулярное выражение соответствует началу строки, затем одно или несколько пробелов с использованием стандарта POSIX, а затем конец строки, то есть с помощью grep -v он удаляет все строки, которые являются только пробелами. Правильно? Что произойдет, если нет пробелов; это просто символ новой строки? – Ben
Как показывает мой пример, удаляется только пустая строка (первая строка). Я добавил дополнительную информацию, надеюсь, что это поможет. :) – Sepero
grep pattern filename.txt | уник
'uniq' уменьшит смежные пустые строки только на одну пустую строку, но не удалит их полностью. Тем не менее, мне нравится пытаться использовать 'uniq'. Сначала сортировка эффективно удалит все пустые строки - оставив только одну, но переупорядочить порядок строк может быть неприемлемым. –
Хорошая точка. Это также повторит повторяющиеся строки. Я предполагаю, что мое решение вводит ошибки. – baitisj
awk 'NF' file-with-blank-lines > file-with-no-blank-lines
Использование Perl:
perl -ne 'print if /\S/'
\S
означает матч без пробелов.
вот еще один способ удаления белых линий и линий, начинающихся с # знака. Я думаю, что это очень полезно для чтения файлов конфигурации.
[[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
То же, что и выше ответы
grep -v -e '^$' foo.txt
Здесь Grep -e означает расширенную версию Grep. '^ $' означает отсутствие символа между^(начало строки) и $ (конец строки). '^' и '$' являются регулярными символами.
Таким образом, команда grep -v будет печатать все строки, которые не соответствуют этому шаблону (без символов между^и $).
Этот путь пустых пустых линий устранен
Держите его простым.
grep . filename.txt
это дает мне все строки в файле –
@ LưuVĩnhPhúc. Он должен выводить все строки в файле, кроме пустых строк. –
Это работает для меня на файлах из системы на основе Linux, но не на файлы из Windows. Предположительно из-за символов конца строки Windows. – ocertat
Если у вас есть последовательности нескольких пустых строк подряд, и хотели бы только одна пустой строки за последовательность, попробуйте
grep -v "unwantedThing" foo.txt | cat -s
cat -s
подавляет повторена пустые выходные линии.
Ваш выход будет идти от
match1
match2
в
match1
match2
три пустые строки в исходном выходе будет сжиматься или «выдавливается» в одну пустую строку.
-v задать расширенное "^ \ s \ s +"
уже делают задать расширенное регулярное выражение, а \ s белое пространство.
+ дублирует текущий шаблон.
^как для начала
Вы можете удалить пустую строку со следующим примером:
grep . filename.txt
- 1. Удалить вкладки и пустые строки с Grep/СЭД/тр
- 2. Удалить пустые строки с помощью блока функций
- 3. Удалить пустые строки с помощью регулярных выражений
- 4. Удалить пустые строки
- 5. удалить лишние пустые строки
- 6. Как удалить пустые строки?
- 7. AWK удалить пустые строки
- 8. Удалить пустые строки
- 9. Совпадение пустые строки в файле Grep
- 10. Удалить пустые строки в DIV
- 11. удалить неиспользуемые строки в jtable (пустые строки)?
- 12. Как удалить строки с помощью grep на основе условий?
- 13. Удалить пустые строки между узорами
- 14. Удалить номер строки из Grep
- 15. DataGridView "удалить пустые строки" - кнопка
- 16. Удалить пустые строки в таблице?
- 17. Удалить текст с помощью GREP в Textwrangler
- 18. Как удалить текст или пустые строки с помощью sed?
- 19. Удалить пустые строки в комментарии Excel с помощью VBA
- 20. Как эффективно удалить пустые строки Excel с помощью VBS?
- 21. Удалить пустые строки и пространство с помощью Perl
- 22. Удалить пустые строки в таблице Excel с помощью VBA
- 23. Как удалить пустые строки из текстового файла с помощью powershell
- 24. Удалить пустые строки в комментарии в Excel с помощью VBA
- 25. Удалить пустые строки внутри ячейки с помощью Excel VBA
- 26. Удалить пустые строки с помощью VBA - MS Excel
- 27. Удалить пустые строки нулевой длины в списке с помощью R
- 28. Удалить пустые строки и столбцы в DataTable с помощью C#
- 29. Как удалить пустые строки в Excel ячейки с помощью VBA
- 30. Как удалить все пустые строки в файле с помощью python?
Это все еще показывает пустые строки. –
См. Обновление к вопросу. – ars
Да, это работает. Он также работает с grep. –