/./仅删除第一个条件的空行,{ 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