Regex AWK跳过空白行
我的脚本的输出使用Regex AWK跳过空白行,regex,bash,sed,awk,Regex,Bash,Sed,Awk,我的脚本的输出使用awk作为制表符分隔: awk -v variable=$bashvariable '{print variable"\t single\t" $0"\t double"}' myinfile.c awk命令在while循环中运行,该循环为每个周期更新变量值和文件myinfle.c。 我使用此命令获得了预期的结果。 但是如果inmyfile.c包含一个空行(它可以包含),那么它不会打印相关信息。我可以告诉 AWK忽略空白行吗? 我知道它可以从MyFiely.c中删除空白行,
awk
作为制表符分隔:
awk -v variable=$bashvariable '{print variable"\t single\t" $0"\t double"}' myinfile.c
awk
命令在while循环中运行,该循环为每个周期更新变量值和文件myinfle.c。
我使用此命令获得了预期的结果。
但是如果inmyfile.c包含一个空行(它可以包含),那么它不会打印相关信息。我可以告诉<代码> AWK<代码>忽略空白行吗?
我知道它可以从MyFiely.c中删除空白行,然后再传递给<代码> AWK。
我熟悉sed
和tr
方法,但我希望awk
能够在上述命令本身中完成,而不是像下面这样的单独解决方案或管道解决方案
sed '/^$/d' myinfile.c
tr -s "\n" < myinfile.c
sed'/^$/d'myinfle.c
tr-s“\n”
提前感谢您的建议和回复。有两种方法可以尝试过滤掉行:
awk 'NF' data.txt
及
把这些放在你命令的开头,即
awk -v variable=$bashvariable 'NF { print variable ... }' myinfile
或
这两个语句都充当网关守卫/if语句
第一种方法的工作原理是只打印出字段数(NF
)不为零(即大于零)的行
第二种方法查看线路长度,如果长度不为零(即大于零),则采取行动
您可以选择最适合您的数据/需求的方法。您可以尝试以下方法:
awk -v variable=$bashvariable '$0{print variable"\t single\t" $0"\t double"}' myinfile.c
试试这个:
awk -v variable=$bashvariable '/^.+$/{print variable"\t single\t" $0"\t double"}' myinfile.c
你可以加上
/^\s*$/ {next;}
到你的脚本前面,它将匹配空白行并跳过AWK匹配规则的其余部分。总而言之:
awk -v variable=$bashvariable '/^\s*$/ {next;} {print variable"\t single\t" $0"\t double"}' myinfile.c
/^\s*$/ {next;}
awk -v variable=$bashvariable '/^\s*$/ {next;} {print variable"\t single\t" $0"\t double"}' myinfile.c