嗨我想要取得列9结果对应于第2列中以4.4开头的第一个点。这是迄今为止我所拥有的。Awk到最接近的匹配
echo $(awk "$2 ~ /4.4*/ {print $9}" 'myfile') >>"myoutputfile"
不幸的是,这在语法上是不正确的,但我看不出如何解决它。 任何帮助将不胜感激。 谢谢。
嗨我想要取得列9结果对应于第2列中以4.4开头的第一个点。这是迄今为止我所拥有的。Awk到最接近的匹配
echo $(awk "$2 ~ /4.4*/ {print $9}" 'myfile') >>"myoutputfile"
不幸的是,这在语法上是不正确的,但我看不出如何解决它。 任何帮助将不胜感激。 谢谢。
正确的语法是:
awk '$2~/^4\.4/{print $9}' myfile >> myoutputfile
这将第九场附加在myfile
到myoutputfile
如果第二场正则表达式匹配^4\.4
。如果第二个字段以^
a 4
开头,后跟.
后跟4
,则正则表达式匹配。
注:
>>
是追加操作,如果你只想myoutputfile
包含从awk
命令的输出使用重定向操作>
这将空文件第一。
awk
默认打印到stdout,使用反引号和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]*$/
'echo $(...)'完全是多余的。 http://partmaps.org/era/unix/award.html#backticks – tripleee 2013-05-06 16:50:26