使用:作为shell中的分隔符提取字符串

时间:2016-09-23 08:53:16

标签: c shell

我有一个字符串

   "inet6 addr: 2620:cb:0:b007::23c3/112 Scope:Global", 

我想只提取

  "2620:cb:0:b007::23c3" 

来自上面的字符串。

如何使用cut / sed / awk命令提取子字符串。

3 个答案:

答案 0 :(得分:2)

这是awk版本:使用awk的分割功能。

 echo $x
"inet6 addr: 2620:cb:0:b007::23c3/112 Scope:Global",


echo $x |awk '{split($3,a,"/");print a[1]}'
2620:cb:0:b007::23c3

或者这样做:

echo $x |grep -Po '(?<=(: )).*(?=/)'
2620:cb:0:b007::23c3

或使用sed来捕获:和第一/之间的数据组。然后使用反向引用来打印它。

echo $x |sed -r 's/^.*:( .*?)\/.*$/\1/'
2620:cb:0:b007::23c3  

或者bash变量扩展:

echo ${x}
"inet6 addr: 2620:cb:0:b007::23c3/112 Scope:Global",
x="echo ${x%%/*}"
echo ${x##*addr: }
2620:cb:0:b007::23c3

答案 1 :(得分:1)

我认为最简单的方法是使用 awk

echo "inet6 addr: 2620:cb:0:b007::23c3/112 Scope:Global", | awk -F' |/' '{print $3}'

答案 2 :(得分:0)

我在shell中太新了,但是使用cut命令,它就像是:

   cut -f2-7 -d":" | cut -f1 -d "/"