awk-从文件中查找数字

awk-从文件中查找数字,awk,Awk,你能给我解释一下这个命令吗 awk '/^$/{flag=""} /Input-Output in F Format/{flag=1;next} flag && ($0 ~ /^[0-9]/ || $0 ~ /^ [0-9]+/) && ($0 !~ /[2][89]/ && $0 !~ /[3][01]/){printf("%.06f\n%.06f\n",$5,$6)}' “F格式的输入输出”是文件中的字符串 谢谢打印第5和第6个数字字段,打印

你能给我解释一下这个命令吗

awk '/^$/{flag=""} /Input-Output in F Format/{flag=1;next} flag && ($0 ~ /^[0-9]/ || $0 ~ /^ [0-9]+/) && ($0 !~ /[2][89]/ && $0 !~ /[3][01]/){printf("%.06f\n%.06f\n",$5,$6)}'
“F格式的输入输出”是文件中的字符串


谢谢

打印第5和第6个数字字段,打印行以数字或空格开头,后跟多个数字,但不包含28、29、30或31中的任何一个,打印行位于包含“F格式输入输出”的行和空行之间

我想知道写一个AWK2英语翻译有多难

/^$/{flag=”“}——如果有空行,请清除该标志

/F格式的输入输出/{flag=1;next}——当字符串较长时,设置flag并跳过其他规则(next)

标志&&…--设置标志时,执行数字规则

($0~/^[0-9]/| |$0~/^[0-9]+/)--行以数字开头,或空格后跟多个数字

($0!~/[2][89]/&&$0!~/[3][01]/)--行不包含28、29、30或31

关于您在53800568中的文件:

awk'/^[0-9][0-9]+[\t]/&NF==6{printf(“%f\n”,$5);}'


为我工作。

问题是什么?哪个部分不清楚?我是初学者,几乎什么都不清楚。我只知道$5,$6是列数,%.06f menas格式的数字-小数点后6位。Flag限制了文件的区域,可以工作,但这部分不清楚。相关:/^$/{Flag=”“}/F格式的输入输出/{flag=1;next}flag/^$/是什么意思?{flag=”“}是空行吗?这是awk中的一个变量;在这个脚本中,它用于设置上下文(当字符串被识别时)并在空行被识别时重置。它必须被设置以启用匹配数字。有一本关于awk的好书“awk编程语言”这涵盖了原始awk(不是gnu extanity)为什么它不能与此文件一起工作?stackoverflow.com/questions/53800568/search-number-in-file在我看来,该文件在输入输出后有一个空行…该空行将重置标志。好的,那么你对这种情况有什么想法-如何限制此区域?