awk从字段中提取数字

时间:2015-11-26 14:33:54

标签: linux bash shell awk

我想提取一个字段包含的数字。

例如归档$5看起来像[u8789]我需要8789

我已经知道可以使用echo "[u8789]"|awk -F'[^0-9]*' '$0=$2'

完成

但是我在awk脚本中需要相同的东西,并且我没有发现如何在不从shell调用awk的情况下获得预期的结果。

THX

2 个答案:

答案 0 :(得分:4)

我会用grep:

grep -o '[[:digit:]]\+'

awk应该使用gawk时,您可以使用FPAT变量:

gawk '{print $1}' FPAT='[0-9]+'

"从内部"在没有FPAT或分隔符艺术的帮助下的awk脚本,我会使用gsub(),如下所示:

awk '{gsub(/[^[:digit:]]/, "", $0)}1'

进一步阅读:

答案 1 :(得分:1)

(g)awk脚本

你的问题不是很明确......

  • 我相信你想要一个剧本。

以下2个例子

I)获得每行中的前2个数字(在@hek2mgl之后)

#!/usr/bin/gawk -f

BEGIN  { FPAT="[0-9]+"}
       { print $1,$2}

II)获取括号[...]

内的所有数字
#!/usr/bin/gawk -f

BEGIN  { RS="["; FS="]"; }
       { print $1}