2012-01-18 3 views
0

Я запускаю следующее, но оно возвращается с пустыми строками вверху и внизу нового файла.SED: первая и последняя пустые строки не удалены

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

input | sed -E '/^$/d' > file.txt 

Также не имеет значения.

sed '1d' 
sed '$d' 

Я не уверен, где выражение имеет проблемы.

+1

Это работает для меня, не уверен, что вы делаете неправильно: 'СЭД«/^$/d»< << $ '\ n \ none \ ntwo \ nthree \ n \ n'' – SiegeX

+2

Как выглядит ваш ввод? Единственное, что я могу видеть с вашим выражением sed, это то, что оно должно быть -e, а не -E ... –

+1

Возможно, ваш вход 'file.txt' имеет« пустые строки »пробелов? как насчет ''/^ * $/d''в качестве вашего регулярного выражения? –

ответ

3

Если вы комфортно использовать awk тогда это будет работать -

awk 'NF' INPUT_FILE > OUTPUT_FILE 
1

grep . file_name > outfile будет делать работу за вас.

0

Это может работать для вас:

echo -e " \t\r\nsomething\n \t \r\n" | sed '/^\s*$/d' | cat -n 
1 something 

нотабене Это удаляет все пустые строки, чтобы сохранить пустые строки в теле использования файла:

echo -e " \t\r\n something\n \nsomething else \n \t \r\n" | 
sed ':a;$!{N;ba};s/^\(\s*\n\)*\|\(\s*\n\)*$//g' 
    something 

something else 
Смежные вопросы