繁体   English   中英

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

[英]Extract string using : as delimiter in shell

我有一个弦

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

我只想提取

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

从上面的字符串。

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

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

 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捕获介于:和first /之间的数据组。 然后使用向后引用进行打印。

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM