2012-12-20 81 views
6

我需要從文件中刪除空行(僅限空格 - 非空記錄)。從文件中刪除空行

下面的命令僅適用於空行,但不是在 空間情況:

sed '/^$/d' filename

可不可以用grep來完成?

+0

檢查這裏:HTTP://theunixshell.blogspot.com/2013/01/deleting-empty-lines-from -file.html – Vijay

回答

12

使用\s*爲只含有空格的空行:

sed '/^\s*$/d' file 

要保存更改回原來的文件使用-i選項:

sed -i '/^\s*$/d' file 

編輯:

正則表達式^\s*$比賽只包含空格的行,grep -v打印行與給定的模式不匹配下面將打印所有無黑線:

grep -v '^\s*$' file 
+0

它比thanxx ........ –

+0

如果你知道空白行沒有空格,那麼你可以將grep減少到'grep。 file'。 –

+1

只是爲了完整性:'awk'NF'文件' –

0

事有湊巧,該文件是從sed命令(sed的「/^$/d」富)沒有正確運行Windows機器複製。

我跑下面的命令,它的工作。

$ DOS2UNIX的富

1
sed -i '/^[ \t]*$/d' file-name 

它會刪除其所有,但並不是所有的空行。的空白(空格或製表符),即(0或更多)在文件中..

注:沒有後跟方括號裏面「\ T」一個「空間」 ...

-i 「將強制將更新後的內容寫回文件中......沒有此標誌,您可以看到屏幕上的空行被刪除,但實際文件不會受到影響。

1

POSIX可移植的方式來做到這一點是

sed -i '/^[[:blank:]]*$/d' file 

grep -v '^[[:blank:]]*$' file