2011-11-25 258 views
3

我需要一個使用sed,awk或perl的班輪來刪除我的數據文件中的空白行。在我的文件中的數據是這樣的 -刪除數據集中的空白行

Aamir 
Ravi 

Arun 


Rampaul 
Pankaj 

Amit 

Bianca 

這些空白是在隨機出現在我的數據文件的任何地方。有人可以建議一個班輪從我的數據集中刪除這些空行。

回答

5

它可以用很多方式完成。

e.g使用awk:

awk '$0' yourFile 

或sed的:

sed '/^$/d' yourFile 

或者grep的:

grep -v '^$' yourFile 
1

你可以這樣做:

sed -i.bak '/^$/d' file 
2

AWK解決方案:

這裏我們通過輸入文件循環來檢查它們是否有任何字段集。 NF是AWK的內置變量,設置爲第幾個字段。如果該線路爲空,則NF未設置。在這一個班輪中,我們測試NF是否爲真,即設爲一個值。如果是,那麼我們打印該行,當該模式爲真時,該行隱含在AWK中。

awk 'NF' INPUT_FILE 

SED解決方案:

該解決方案是類似於在答覆中提到的那些。作爲語法顯示,我們不打印任何空白的行。

sed -n '/^$/!p' INPUT_FILE 
3

Perl解決方案。從命令行。

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

就地編輯文件並創建原始文件的備份。

+0

感謝。我正在尋找一個可以編輯的Perl腳本。 – anjanb

+0

刪除'.bak',這將在沒有備份的情況下就地編輯。 –

1

一個Perl的解決方案:

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

...它創建原始文件的備份副本,後綴爲 '名爲.old'

2

爲Perl它是比較容易的的sed,awk中,或grep的。

$作爲TMP/TMPFILE阿米爾

拉維阿倫Rampaul

潘卡阿米特

比安卡$ perl的

-on -i的{^ \ s * \ n $} {}'tmp/tmpfile

爲$ TMP/TMPFILE 阿米爾拉維·蘭帕爾 阿倫阿米特潘卡 比安卡

+0

這裏的名字用空格分隔符顯示。但在shell中,名稱顯示在另一個之下,沒有任何空行。 – Bharatt