我是Perl的新手并试图让它发挥作用.当列1的内容==> 0并且第2列包含"I"(罗马数字为1)时,我希望打印3个特定列.以下内容返回包含> 0但不包含"I"的所有行.
perl -lane 'print "$F[0]\t$F[1]\t$F[5]" if $F[1] > 0 && $F[0]==/I/' input > output
Run Code Online (Sandbox Code Playgroud)
我做错了什么?我也在努力让它与模式完全匹配,即我不希望它拉出"II"或"VIII".
您需要使用绑定运算符 =~(而不是==数字相等性测试)来针对正则表达式模式测试字符串
如果要指定其全部内容,则需要锚定模式的开头和结尾.在Metacharacters中阅读它
$F[0]==/I/
Run Code Online (Sandbox Code Playgroud)
应该
$F[0] =~ /^I$/
Run Code Online (Sandbox Code Playgroud)
或者,更好的是,只使用字符串相等测试
$F[0] eq 'I'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
57 次 |
| 最近记录: |