我想提取一个字段包含的数字。
例如归档$5
看起来像[u8789]
我需要8789
。
我已经知道可以使用echo "[u8789]"|awk -F'[^0-9]*' '$0=$2'
但是我在awk脚本中需要相同的东西,并且我没有发现如何在不从shell调用awk的情况下获得预期的结果。
THX
答案 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}