使用各种分隔符提取文本的字符串数

时间:2014-10-22 09:27:40

标签: linux bash scripting

我需要提取以下几行的数字,这些是你可以找到我的所有可能性,在要提取的字符串之后的第一个逗号中表征。

SIP/6599595,,tr
SIP/Core-out/6641150,30
8000,,
SIP/Ar2-1-out/6641150,30

输出应为:

6599595
6641150
8000
6641150

该方法在BASH。

4 个答案:

答案 0 :(得分:2)

快速而肮脏:

grep -Po '\d+(?=,)'

包含您的数据:

kent$ echo "SIP/6599595,,tr
SIP/Core-out/6641150,30
8000,,
SIP/Ar2-1-out/6641150,30"|grep -Po '\d+(?=,)'
6599595
6641150
8000
6641150

答案 1 :(得分:2)

这个awk脚本产生了所需的输出:

$ awk -F'[,/]' '{for(i=1;i<=NF;++i)if($i~/^[0-9]+$/){print $i; next}}' file.txt

将输入字段分隔符设置为逗号或斜杠。遍历每个字段并打印第一个仅包含数字的字段。

答案 2 :(得分:1)

一些管道式的seds也会把你排除在外。

sed -e 's/^.*\///' -e 's/\,.*$//' file

测试

# cat arg.txt
SIP/6599595,,tr
SIP/Core-out/6641150,30
8000,,
SIP/Ar2-1-out/6641150,30
# sed -e 's/^.*\///' -e 's/\,.*$//' arg.txt
6599595
6641150
8000
6641150

答案 3 :(得分:0)

grep -oP '(/|^)\K[0-9]+'

输出:

6599595
6641150
8000
6641150