Удалите пустые строки с помощью grep

Я попробовал grep -v '^ $' в Linux, но это не сработало. Этот файл пришел из файловой системы Windows.

150
задан palacsint 4 October 2013 в 09:07
поделиться

4 ответа

Попробуйте следующее:

grep -v -e '^$' foo.txt

Параметр -e разрешает сопоставление шаблонов регулярных выражений.

Одиночные кавычки вокруг ^ $ позволяют работать с Cshell. Другие оболочки будут довольны одиночными или двойными кавычками.

ОБНОВЛЕНИЕ: это работает для меня для файла с пустыми строками или «все пробелы» (например, строки Windows с окончанием строки стиля «\ r \ n»), тогда как выше удаляются только файлы с пустыми строками и стилем unix. окончания строк:

grep -v -e '^[[:space:]]*$' foo.txt
274
ответ дан 23 November 2019 в 22:18
поделиться

Очень старались, но похоже, что это сработало (при условии, что \ r кусает вас здесь)

printf "\r" | egrep -xv "[[:space:]]*"
1
ответ дан 23 November 2019 в 22:18
поделиться
$ dos2unix file 
$ grep -v "^$" file

Или просто awk

awk 'NF' file

Если у вас нет dos2unix, то вы можете использовать инструменты вроде tr

tr -d '\r' < "$file" > t ; mv t "$file"
28
ответ дан 23 November 2019 в 22:18
поделиться

Я предпочитаю использовать egrep , хотя в моем тесте с подлинным файлом с пустой строкой ваш подход работал нормально (хотя в моем тесте без кавычек). Это тоже сработало:

egrep -v "^(\r?\n)?$" filename.txt
3
ответ дан 23 November 2019 в 22:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: