Мне нужно удалить пустые новые строки из текстового файла в терминале.
Файл примера
123
123
123
123
123
123
Я искал в google немного, но найденное решение было sed '/^$/d' myFile > tt
, и это не помогает. Я все еще получаю эти пустые новые строки.
Используйте 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
Использование 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
Вот еще одно решение:
python -c "import sys; print ''.join(line for line in sys.stdin.readlines() if line.strip() != ''),"
(python
установлен по умолчанию)
Использование 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