Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex AWK跳过空白行_Regex_Bash_Sed_Awk - Fatal编程技术网

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