您好我正在尝试将第9列结果与第2列中以4.4开头的第一个点相对应。这是我到目前为止所拥有的。
echo $(awk "$2 ~ /4.4*/ {print $9}" 'myfile') >>"myoutputfile"
不幸的是,这在语法上是不正确的,但我看不出如何修复它。 任何帮助将非常感激。 感谢。
答案 0 :(得分:5)
正确的语法是:
awk '$2~/^4\.4/{print $9}' myfile >> myoutputfile
如果第二个字段与正则表达式myfile
匹配,则会将myoutputfile
中的第九个字段附加到^4\.4
。如果第二个字段以^
4
开头,后跟句点.
后跟4
,则正则表达式匹配。
注意:
>>
是附加运算符,如果您只希望myoutputfile
包含awk
命令的输出,则使用重定向运算符>
这将首先清空文件。
awk
会打印到stdout,使用反引号并不需要echo
。
awk
脚本应仅包含在单引号中,并且此处不需要引用文件。
修改强>
仅使用exit
返回第一个匹配项以退出脚本:
awk '$2~/^4\.4/{print $9;exit}' myfile
答案 1 :(得分:2)
awk '$2 ~ /^4[.]4/ {print $9}' myfile >> myoutputfile
符号^
表示列的开头。
答案 2 :(得分:1)
从4.4开始
应为/^4\.4.*/
这样:
awk '$2~/^4\.4.*/{print $9}' myfile >> myoutputfile
一些例子/解释:
4.4* matches foo4x4, foo4x4444 ...
^4\.4* matches 4.4, 4.44444, also 4. ... but not 4.45850
^4\.4.* (same as ^4\.4) matches 4.4, 4.4444, 4.45567 and 4.4abcde
如果您只想在4.4
后面输入数字,请使用:
/^4\.4[0-9]*$/