/./
仅删除第一个条件{ print "a"$0 }
的空行,我如何确保脚本删除每个条件的空行?
awk -F, '/./ { print "a"$0 } NR!=1 { print "b"$0 } { print "c"$0 } END { print "d"$0 }' MyFile
答案 0 :(得分:31)
awk命令从文件中删除空白行:
awk 'NF > 0' filename
答案 1 :(得分:22)
已经提出的答案的缩写形式如下:
awk NF file
任何awk
脚本都遵循语法condition {statement}
。如果语句块不存在,awk
将打印整个记录(行),以防condition
不为零。
NF
中的 awk
变量包含该行中的字段数。因此,当该行非空时,NF
保持一个正值,触发默认的awk
操作(打印整行)。如果是空行,NF
为零并且不满足条件,因此awk
不执行任何操作。
请注意,您甚至不需要引用,因为这两个字母的awk脚本不包含任何可由shell解释的空格或字符。
或
awk '!/^$/' file
^$
是空行的正则表达式。需要2 /
才能让awk
理解字符串是正则表达式。 !
是标准否定。
答案 2 :(得分:9)
如果要忽略所有空行,请将其放在脚本的开头
/^$/ {next}
答案 3 :(得分:2)
将以下条件放在第一个条件中,并使用if
语句检查它们,如下所示:
awk -F, '
/./ {
print "a"$0;
if (NR!=1) { print "b"$0 }
print "c"$0
}
END { print "d"$0 }
' MyFile