/./
仅删除第一个条件的空行,{ 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}
。如果语句块不存在,awk
将打印整个记录(行)以防condition
不为零。
NF
变量 inawk
保存行中的字段数。因此,当该行非空时,NF
保留一个触发默认操作的正值awk
(打印整行)。如果是空行,NF
则为零且不满足条件,因此awk
什么也不做。
请注意,您甚至不需要引号,因为这个 2 个字母的 awk 脚本不包含任何可以被 shell 解释的空格或字符。
或者
awk '!/^$/' file
^$
是空行的正则表达式。需要2/
才能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