2015-01-21 53 views
0

EDIT(問題解決了,問題misframed,見下文)如何在剝離空行時保留AWK中的前導製表符?

我有一個示例腳本文件,像這樣:

if (test == 1) { 


    if (test2 == 2) { 

     doSomething(); 
    } 
} 

我試圖用AWK通過剝離掉空行:

awk 'NF' filename1 > filename2 

這導致了所有領先的標籤被壓扁,像這樣:

if (test == 1) { 
if (test2 == 2) { 
    doSomething(); 
} 
} 

相反,我想AWK保留原始前導製表符(同時剝離空行),像這樣:

if (test == 1) { 
    if (test2 == 2) { 
     doSomething(); 
    } 
} 

有人嗎?

EDIT(問題解決了)

我只是再次測試它,它似乎是原來的

awk 'NF' filename1 > filename2 

作品。結果文件名2失敗,因爲文件名1是g ++的臨時文件輸出,這是執行壓扁的程序。

對不起,我感到困惑和錯誤,並感謝那些迴應。

回答

0

不涉及awk的一個解決辦法是使用grep像

grep . filename 

選擇除換行符一切。

TEST:

$grep . temp 
if (test == 1) { 
     if (test2 == 2) { 
        doSomething(); 
     } 
} 
1

你可以嘗試像

awk '!/^$/' 

測試

$ awk '!/^$/' inputFile 
if (test == 1) { 
    if (test2 == 2) { 
     doSomething(); 
    } 
} 
0

用做它在的地方:

perl -i -lne 'print if(/./)' file 

如果行中至少有一個字符會打印出來。否則它會簡單地刪除線。 -i確保它在沒有臨時文件的情況下發生

+0

請解釋它的作用。 – 2015-01-21 10:06:25

+0

這將打印只有空格的行。 – 2015-01-21 10:53:41