/./
只会移除第一个条件 { print "a"$0 }
中的空行,我该如何确保脚本移除每个条件中的空行?
awk -F, '/./ { print "a"$0 } NR!=1 { print "b"$0 } { print "c"$0 } END { print "d"$0 }' MyFile
已经提出的答案的简短形式可以是以下内容:
awk NF file
任何awk
脚本都遵循语法condition {statement}
。如果没有语句块,当condition
不为零时,awk
将打印整个记录(行)。
awk
中的NF
变量保存行中字段的数量。因此,当行不为空时,NF
保存正值,触发默认的awk
操作(打印整行)。对于空行,NF
为零且条件未满足,因此awk
不执行任何操作。
请注意,甚至不需要引号,因为这个由两个字母组成的awk脚本不包含任何空格或shell可能会解释的字符。
或
awk '!/^$/' file
^$
是匹配空行的正则表达式。使用两个 /
用于告诉 awk
这是一个正则表达式。!
表示逻辑非。
从文件中删除空行的Awk命令:
awk 'NF > 0' filename
如果你想忽略所有的空行,在脚本开头加入以下代码:
/^$/ {next}
if
语句进行检查,如下所示:awk -F, '
/./ {
print "a"$0;
if (NR!=1) { print "b"$0 }
print "c"$0
}
END { print "d"$0 }
' MyFile
awk NF file
。 - Phemelo Khetho
awk '/./' MyFile
?awk NF
。http://www.unix.com/shell-programming-scripting/84923-remove-all-blank-lines-shell-awk.html http://www.tek-tips.com/viewthread.cfm?qid=1282604 - ant