[英]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.