我很难让它起作用:
awk -F ";" '{for(i=1; i < NF;i++) $i ~ /^_.*/ {print $i}}'我想迭代所有字段(记录可以有7-9),并且只打印那些以_开头的字段,除了上面的行给我打印语句时的语法错误,如果我省略了{print $i},我就得不到任何输出。
怎样才能正确地做到这一点?
发布于 2016-04-27 10:05:39
你错过了一个if
awk -F ";" '{for(i=1; i < NF;i++) if($i ~ /^_.*/) {print $i}}'awk程序的结构是condition { action },但是您目前拥有的都在一个动作块中(默认情况下条件为真)。在操作块中,if不是隐式的。
顺便说一句,模式中的.*是多余的;您还可以使用/^_/来匹配以_开头的任何字符串。
注意事项:由于字段是1-索引的,所以右循环条件很可能是i <= NF。如果您确信最后一个字段是不必要的,条件i < NF将完成此工作。
https://stackoverflow.com/questions/36886614
复制相似问题