Удаление двойных новых строк с помощью awk / sed - PullRequest
3 голосов
/ 17 ноября 2010

Привет всем.У меня есть файл, полный данных, каждая строка состоит из чего-то похожего на «755545; 45634; 1244».Иногда где-то может появляться неизвестное количество дополнительных новых строк, которые я не хочу.Пример:

256163;16816;1651
16156;165165;1165

15153;135135;15351
15153;1351;8



165;15313;153513
254;45;45

Желаемый вывод:

256163;16816;1651
16156;165165;1165    
15153;135135;15351
15153;1351;8
165;15313;153513
254;45;45

Можно ли это легко сделать с помощью утилиты awk / sed в unix?

Ответы [ 5 ]

9 голосов
/ 17 ноября 2010

Ответ от @Luixv будет правильным, если в «пустых» строках нет пробелов. Если есть пробел, используйте это вместо:

sed '/^[ \t]*$/d'

Это пробел перед \ t в скобках, т.е. [пробел \ t]

Если это не сработает, у вас могут быть проблемы с переводом строки. Сделайте:

$ file test_file
test_file: ISO-8859 text, with CRLF, LF line terminators

Если вы получили вывод выше, преобразуйте файл в unix, используя:

$ dos2unix test_file
6 голосов
/ 17 ноября 2010

sed '/ ^ $ / d'

1 голос
/ 26 сентября 2012
sed -n 's/^[ ,\t]*$/!p' filename
1 голос
/ 14 апреля 2012
sed -nre "s/([^$])/\1/p" input
0 голосов
/ 25 июня 2012

Решено с помощью ssed super_sed, если оно не установлено, установите его.

ssed -R -e '/(^$|\s)/ d' yourFile

или

cat yourFile| ssed -R -e '/(^$|\s)/ d'

Счастливого подкормки

PS: будет работать, даже если у вас есть вкладки или \r \t \n, следовательно, \s в ReqExp.

\r = Return Carriage
\n = New Line
\t = Tab
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...