...怎么获取两者之前的字符串 S 啊?求shell脚本!!!
发布网友
发布时间:2024-10-09 07:05
我来回答
共2个回答
热心网友
时间:2024-10-26 12:01
可以使用下面的命令,分两步
第一步:
str=${字符串#*"$s1"}
拿掉第一各字符串s1及其左边的字符串
第二步:
result=${str%"$2"*}
拿掉最后一个字符串s2及其右边的字符串
最后$result就是要得到的字符串
下面是例子,313313就是最终的字符串
# echo $a
basdcfd12313313nnjlkpkk
# echo $b
fd12
# echo $c
nn
# str=${a#*"$b"}
# echo $str
313313nnjlkpkk
# rst=${str%"$c"*}
# echo $rst
313313
热心网友
时间:2024-10-26 11:59
这种问题都是简单的正则应用而已,一般来说喜欢借助强大的grep,awk与sed
我能想到两种方法,都是单命令,相信是这非常简单的:
第一种方法用awk,以s1或者s2为字段分隔符,把整个字符便分隔成了三段
awk -F"(s1|s2)" '{print $2}'
第二种方法用sed,删除掉s1及前面的字符与s2及后面的字符
sed "s/\(.*s1\|s2.*\)//g"
可惜单用grep的话,我做不到……