我需要提取以下几行的数字,这些是你可以找到我的所有可能性,在要提取的字符串之后的第一个逗号中表征。
SIP/6599595,,tr
SIP/Core-out/6641150,30
8000,,
SIP/Ar2-1-out/6641150,30
输出应为:
6599595
6641150
8000
6641150
该方法在BASH。
答案 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