Awk:如何获得一个领域的一部分?

Say*_*iss 2 awk

我得到了这些数据:

aaa:123 bbb:**234** ccc:345

eee:435 ddd:**231** xxx:897

...
Run Code Online (Sandbox Code Playgroud)

如何使用Awk获得粗体部分?

Mic*_*ber 11

获取部分字段的一般方法是使用split:

awk -F':' '{ split($3, subfield, " "); print subfield[1] }'
Run Code Online (Sandbox Code Playgroud)

其他人提到使用正则表达式将空格和冒号都视为字段分隔符.这是好的,只要空格的数量是可预测的.但它会失败,例如,对于这样的输入:

aaa:123 bbb:234 ccc:345
eee:435 ddd:231 xxx:897
fff:214 ads 23423 fds:183 eee:234
Run Code Online (Sandbox Code Playgroud)

选择哪种方法更符合您的数据.


Bir*_*rei 6

使用空格的正则表达式加上冒号和计数字段:

awk -F'[[:blank:]:]+' '{ print $4 }' infile
Run Code Online (Sandbox Code Playgroud)

它产生:

234
231
Run Code Online (Sandbox Code Playgroud)