该/./被移除的第一个条件的空行{ print "a"$0 }而已,我怎么会确保脚本删除空行对每个条件?
awk -F, '/./ { print "a"$0 } NR!=1 { print "b"$0 } { print "c"$0 } END { print "d"$0 }' MyFile
Run Code Online (Sandbox Code Playgroud)
oli*_*liv 28
已提出的答案的较短形式可能如下:
awk NF file
Run Code Online (Sandbox Code Playgroud)
任何awk脚本都遵循语法condition {statement}.如果语句块不存在,awk将打印整个记录(行),以防condition它不为零.
NF变量in awk保存行中的字段数.因此,当该行非空时,NF保持一个正值,触发默认awk操作(打印整行).在空行的情况下,NF为零并且不满足条件,所以awk什么都不做.
请注意,您甚至不需要引用,因为这两个字母awk脚本不包含任何可由shell解释的空格或字符.
要么
awk '!/^$/' file
Run Code Online (Sandbox Code Playgroud)
^$是一个空行的正则表达式./需要2 才能awk理解字符串是正则表达式.!是标准的否定.
将以下条件放入第一个条件中,并使用if语句检查它们,如下所示:
awk -F, '
/./ {
print "a"$0;
if (NR!=1) { print "b"$0 }
print "c"$0
}
END { print "d"$0 }
' MyFile
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
44690 次 |
| 最近记录: |