我有一个字符串
"inet6 addr: 2620:cb:0:b007::23c3/112 Scope:Global",
我想只提取
"2620:cb:0:b007::23c3"
来自上面的字符串。
如何使用cut / sed / awk命令提取子字符串。
答案 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 "/"