如何在剥离空行时保留AWK中的前导选项卡?

时间:2015-01-21 09:25:19

标签: 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();
    }
}

任何?

编辑(问题已解决)

我刚刚再次测试了它,它似乎是原来的

awk 'NF' filename1 > filename2 

的工作原理。结果filename2失败,因为filename1是g ++的临时文件输出,这是执行压扁的程序。

对于混乱和错误感到抱歉,感谢那些回复的人。

3 个答案:

答案 0 :(得分:1)

您可以尝试类似

的内容
awk '!/^$/' 

<强>测试

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

答案 1 :(得分:0)

不涉及awk的解决方案是使用grep like

grep . filename

选择除换行之外的所有内容。

<强> TEST:

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

答案 2 :(得分:0)

用以下方式做到:

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

如果行中至少有一个字符,则会打印出来。否则它只会删除该行。 -i确保它在没有临时文件的情况下发生