Удалить пустые строки в наборе данных - PullRequest
4 голосов
/ 25 ноября 2011

Мне нужен один вкладыш, использующий sed, awk или perl для удаления пустых строк из моего файла данных. Данные в моем файле выглядят так -

Aamir
Ravi 

Arun


Rampaul
Pankaj

Amit

Bianca

Эти пробелы в в случайном порядке и появляются в любом месте в моем файле данных. Может кто-нибудь посоветовать убрать эти пустые строки из моего набора данных в одну строку.

Ответы [ 6 ]

6 голосов
/ 25 ноября 2011

это можно сделать разными способами.

например, с awk:

awk '$0' yourFile

или sed:

sed '/^$/d' yourFile

или grep:

grep -v '^$' yourFile
4 голосов
/ 25 ноября 2011

Решение Perl.Из командной строки.

$ perl -i.bak -n -e'print if /\S/' INPUT_FILE

Редактирует файл на месте и создает резервную копию исходного файла.

2 голосов
/ 05 февраля 2013

для perl это проще, чем sed, awk или grep.

$ cat tmp / tmpfile Аамир Ravi

Arun

Rampaul Панкай

Amit

Bianca

$ perl -i -pe ' s {^ \ s * \ n $} {} ' tmp / tmpfile

$ cat tmp / tmpfile Аамир Ravi Arun Rampaul Панкай Amit Бьянка

2 голосов
/ 25 ноября 2011

AWK Решение:

Здесь мы перебираем входной файл, чтобы проверить, установлено ли у него какое-либо поле. NF - встроенная переменная AWK, для которой задано число полей. Если строка пуста, то NF не установлен. В этом одном лайнере мы проверяем, является ли NF истинным, т.е. устанавливается значение. Если это так, мы печатаем строку, которая неявна в AWK, когда шаблон истинен.

awk 'NF' INPUT_FILE

SED Решение:

Это решение похоже на упомянутое в качестве ответа. Как показывает синтаксис, мы не печатаем пустые строки.

sed -n '/^$/!p' INPUT_FILE
1 голос
/ 25 ноября 2011

Решение Perl:

perl -ni.old -e 'print unless /^\s*$/' file

... которые создают как резервную копию исходного файла с суффиксом '.old'

1 голос
/ 25 ноября 2011

Вы можете сделать:

 sed -i.bak '/^$/d' file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...