我收到了这些数据:
aaa:123 bbb:**234** ccc:345
eee:435 ddd:**231** xxx:897
...
如何使用Awk获取粗体部分?
答案 0 :(得分:9)
获取部分字段的一般方法是使用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
选择哪种方法更符合您的数据。
答案 1 :(得分:6)
使用空格的正则表达式加上冒号和计数字段:
awk -F'[[:blank:]:]+' '{ print $4 }' infile
它产生:
234
231
答案 2 :(得分:3)
这很简单。你试过吗
awk -F'[: ]' '{print $4}' inputfile
答案 3 :(得分:3)
我会用这个:
awk '{split($2,a,":");print a[2]}' file
为什么呢?不容易看出它的空间或标签是否分隔了字段。在awk中使用FS的默认设置是任何空白,因此即使其选项卡或空格也可以使用。然后我们从第二个字段中取出我们需要的部分,使用:
答案 4 :(得分:1)
你可以使用这样的东西
BEGIN { FS = ":" }
{
split($(NF-1),a," ");
$2=a[2];
print $2;
}
假设您的列始终为2th
,列数为3
。