遍历字段并仅打印那些匹配正则表达式的字段
Iterate over fields and print only those matching regex
我无法正常工作:
awk -F ";" '{for(i=1; i < NF;i++) $i ~ /^_.*/ {print $i}}'
我想遍历所有字段(记录可以有 7-9 个)并只打印那些以 _
开头的字段,除了上面的行在打印语句中给我一个语法错误,如果我省略 {print $i}
我没有得到任何输出。
正确的做法是什么?
您缺少 if
:
awk -F ";" '{for(i=1; i < NF;i++) if($i ~ /^_.*/) {print $i}}'
awk 程序的结构是 condition { action }
,但您当前拥有的全部都在一个操作块中(条件默认为 true)。在操作块中,if
不是隐含的。
顺便说一句,模式中的 .*
是多余的;您也可以使用 /^_/
来匹配任何以 _
.
开头的字符串
我无法正常工作:
awk -F ";" '{for(i=1; i < NF;i++) $i ~ /^_.*/ {print $i}}'
我想遍历所有字段(记录可以有 7-9 个)并只打印那些以 _
开头的字段,除了上面的行在打印语句中给我一个语法错误,如果我省略 {print $i}
我没有得到任何输出。
正确的做法是什么?
您缺少 if
:
awk -F ";" '{for(i=1; i < NF;i++) if($i ~ /^_.*/) {print $i}}'
awk 程序的结构是 condition { action }
,但您当前拥有的全部都在一个操作块中(条件默认为 true)。在操作块中,if
不是隐含的。
顺便说一句,模式中的 .*
是多余的;您也可以使用 /^_/
来匹配任何以 _
.