Linux AWK 去除空行

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/10347653/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-06 06:01:35  来源:igfitidea点击:

AWK remove blank lines

linuxawk

提问by general exception

The /./is removing blank lines for the first condition { print "a"$0 }only, how would I ensure the script removes blank lines for every condition ?

/./被删除空行的第一个条件{ print "a"$0 }而已,我怎么会确保每个条件的脚本删除空行?

awk -F, '/./ { print "a"
awk -F, '
    /./ { 
        print "a"
/^$/ {next}
; if (NR!=1) { print "b"
awk 'NF > 0' filename
} print "c"
awk NF file
} END { print "d"
awk '!/^$/' file
} ' MyFile
} NR!=1 { print "b"##代码## } { print "c"##代码## } END { print "d"##代码## }' MyFile

采纳答案by Birei

Put following conditions inside the first one, and check them with ifstatements, like this:

将以下条件放在第一个条件中,并使用if语句检查它们,如下所示:

##代码##

回答by glenn Hymanman

if you want to ignore all blank lines, put this at the beginning of the script

如果要忽略所有空行,请将其放在脚本的开头

##代码##

回答by Aaykay

Awk command to remove blank lines from a file:

从文件中删除空行的 awk 命令:

##代码##

回答by oliv

A shorter form of the already proposed answer could be the following:

已经提出的答案的较短形式可能如下:

##代码##

Any awkscript follows the syntax condition {statement}. If the statement block is not present, awkwill print the whole record (line) in case the conditionis not zero.

任何awk脚本都遵循语法condition {statement}。如果语句块不存在,awk则在condition不为零的情况下打印整个记录(行)。

NFvariable in awkholds the number of fields in the line. So when the line is non empty, NFholds a positive value which trigger the default awkaction (print the whole line). In case of empty line, NFis zero and the condition is not met, so awkdoes nothing.

NF变量 inawk保存行中的字段数。因此,当该行非空时,NF持有一个正值,触发默认awk操作(打印整行)。在空行的情况下,NF为零且不满足条件,因此awk什么也不做。

Note that you don't even need quote because this 2 letters awk script doesn't contain any space or character that could be interpreted by the shell.

请注意,您甚至不需要引号,因为这个 2 个字母的 awk 脚本不包含任何可以被 shell 解释的空格或字符。



or

或者

##代码##

^$is the regex for an empty line. The 2 /is needed to let awkunderstand the string is a regex. !is the standard negation.

^$是空行的正则表达式。/需要2才能awk理解字符串是正则表达式。!是标准否定。