2012-01-18 110 views
0

我正在運行以下內容,但是它在新文件的頂部和底部以空行返回。SED:第一個和最後一個空行不被刪除

如何輸出到沒有這些空行的新文件?

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

以下也沒有效果。

sed '1d' 
sed '$d' 

我不確定表達式存在問題。

+1

這個工作對我來說,不知道你做錯了什麼:'sed的「/^$/d」 < << $'\ n \ none \ ntwo \ nthree \ n \ n'' – SiegeX 2012-01-18 06:16:03

+2

您的輸入是什麼樣的?我可以看到你的sed表達式唯一的事情是它應該是-e而不是-E ... – 2012-01-18 06:22:09

+1

也許你的輸入'file.txt'有空格「空行」?那麼'/^* $/d''作爲你的正則表達式呢? – 2012-01-18 06:43:39

回答

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 
相關問題