嗨,我正在尝试获取与第 2 列中以 4.4 开头的第一个点相对应的第 9 列结果。这是我到目前为止所拥有的。
echo $(awk "$2 ~ /4.4*/ {print $9}" 'myfile') >>"myoutputfile"
不幸的是,这在语法上是不正确的,但我不知道如何解决它。任何帮助将非常感激。谢谢。
正确的语法是:
awk '$2~/^4\.4/{print $9}' myfile >> myoutputfile
如果第二个字段与正则表达式匹配,myfile
这将附加第九个字段。如果第二个字段以a开头,然后是句点,然后是 ,则正则表达式匹配。myoutputfile
^4\.4
^
4
.
4
笔记:
>>
是附加运算符,如果您只想myoutputfile
包含awk
命令的输出,请使用重定向运算符,>
这将首先清空文件。
awk
默认情况下打印到标准输出,使用反引号并且echo
不是必需的。
awk
脚本应该只用单引号括起来,文件不需要在这里引用。
编辑:
仅返回第一个匹配项exit
用于退出脚本:
awk '$2~/^4\.4/{print $9;exit}' myfile
awk '$2 ~ /^4[.]4/ {print $9}' myfile >> myoutputfile
符号^
表示列的开始。
从 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]*$/