Как программно удалить пустые новые строки из файла?

Мне нужно удалить пустые новые строки из текстового файла в терминале.

Файл примера

123
123
123
123

123



123

Я искал в google немного, но найденное решение было sed '/^$/d' myFile > tt, и это не помогает. Я все еще получаю эти пустые новые строки.

2
задан 9 November 2011 в 18:43

4 ответа

Используйте grep для пустых строк:

grep . file

Или попробуйте использовать ex -way (кросс-платформенная совместимость) для пустых строк (например, содержащих пробелы):

ex -s +'v/\S/d' -cwq test.txt

Для нескольких файлов (редактирование на месте):

ex -s +'bufdo!v/\S/d' -cxa *.txt

Примечание: команда :bufdo не является POSIX .

Без изменения файла (просто напечатайте на стандартном выходе):

cat test.txt | ex -s +'v/\S/d' +%p +q! /dev/stdin
0
ответ дан 25 July 2018 в 20:49

Использование AWK: NF - встроенная переменная AWK, которая хранит количество полей в каждой записи. Когда он сам используется, он будет печатать только те строки, где NF! = 0.

[jaypal~/Temp]$ cat t
123
123
123
123

123



123

[jaypal~/Temp]$ awk 'NF' t
123
123
123
123
123
123
2
ответ дан 25 July 2018 в 20:49

Вот еще одно решение:

python -c "import sys; print ''.join(line for line in sys.stdin.readlines() if line.strip() != ''),"

(python установлен по умолчанию)

0
ответ дан 4 August 2018 в 18:20

Использование AWK: NF - встроенная переменная AWK, которая хранит количество полей в каждой записи. Когда он сам используется, он будет печатать только те строки, где NF! = 0.

[jaypal~/Temp]$ cat t
123
123
123
123

123



123

[jaypal~/Temp]$ awk 'NF' t
123
123
123
123
123
123
2
ответ дан 10 August 2018 в 08:48

Другие вопросы по тегам:

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