我无法让这个工作:
awk -F ";" '{for(i=1; i < NF;i++) $i ~ /^_.*/ {print $i}}'
Run Code Online (Sandbox Code Playgroud)
我想迭代所有字段(记录可以有7-9)并且只打印那些以_
上面的行开头的那些在print语句中给出了语法错误,如果我省略了{print $i}
我没有得到任何输出.
这样做的正确方法是怎样的?
你错过了一个if
:
awk -F ";" '{for(i=1; i < NF;i++) if($i ~ /^_.*/) {print $i}}'
Run Code Online (Sandbox Code Playgroud)
awk程序的结构是condition { action }
你当前拥有的所有内容都在一个动作块中(默认条件为true).在动作块内,if
它不是隐含的.
顺便说一句,.*
模式中的多余; 你也可以/^_/
用来匹配任何以字母开头的字符串_
.