我有一个类似" siva:x:503:505::/home/abc:/bin/bash "
的字符串。
我想只在变量中存储503
。如何使用正则表达式或sed命令实现这一点。还是可以用其他方式?
答案 0 :(得分:1)
我只想在变量
中存储 503
使用以下方法之一:
sed
命令:
number=$(echo " siva:x:503:505::/home/abc:/bin/bash " | sed -rn 's/[^0-9]*([0-9]+).*/\1/gp')
([0-9]+)
- 将捕获第一个数字序列
awk
命令,带有正则表达式模式[^0-9]*
指定的字段分隔符:
number=$(echo " siva:x:503:505::/home/abc:/bin/bash " | awk -F"[^0-9]*" '{print $2}')
-F"[^0-9]*"
- 非数字序列被视为字段分隔符(通过字段编号访问所有数字)
echo $number
输出:
503
答案 1 :(得分:0)
使用awk -F":" '{print $3}'
bash-4.2$ echo " siva:x:503:505::/home/abc:/bin/bash "|awk -F":" '{print $3}'
503
答案 2 :(得分:0)
使用cut
:
myvar=$(echo "siva:x:50ds3:505::/home/abc:/bin/bash" | cut -d':' -f3);