我得到了这个数据:
aaa:123 bbb:**234** ccc:345
eee:435 ddd:**231** xxx:897
...
如何使用 Awk 获得粗体部分?
获取部分字段的一般方法是使用split
:
awk -F':' '{ split($3, subfield, " "); print subfield[1] }'
其他人提到使用正则表达式将空格和冒号都视为字段分隔符。这很好,只要空格的数量是可预测的。但否则它将失败,例如,对于这样的输入:
aaa:123 bbb:234 ccc:345
eee:435 ddd:231 xxx:897
fff:214 ads 23423 fds:183 eee:234
选择与您的数据更匹配的方法。
使用空格加上冒号和计数字段的正则表达式:
awk -F'[[:blank:]:]+' '{ print $4 }' infile
它产生:
234
231
I would have used this:
awk '{split($2,a,":");print a[2]}' file
Why? Its not easy to see if its space or tab that separates the filed. Using default setting of FS in awk is any blank, so it will work even if its tab or spaces. Then we from second field take out part we need, using split by :
这很简单。你试过了吗
awk -F'[: ]' '{print $4}' inputfile
你可以使用这样的东西
BEGIN { FS = ":" }
{
split($(NF-1),a," ");
$2=a[2];
print $2;
}
假设您的列始终是2th
并且列数是3
。