String 删除字符串中具有正向斜杠的部分

String 删除字符串中具有正向斜杠的部分,string,parsing,sed,tr,String,Parsing,Sed,Tr,如何删除字符串中带有斜杠和问号的部分让我感到困惑 示例:/diag/PeerManager/list?设备ID=RXMWANT8WFYJNF7K6DXXXJLJVN 我需要输出为RXMWANT8WFYJNF7K6DXXXJLJVN 我尝试了tr和sed,但是tr删除了输出中需要的一些字符sed因为前斜杠给我带来了麻烦 删除字符串的/diag/PeerManager/list?deviceid=部分的快速方法是什么? 谢谢 这对我很有用: sed 's/.*deviceid=\([^&]*

如何删除字符串中带有斜杠和问号的部分让我感到困惑

示例:
/diag/PeerManager/list?设备ID=RXMWANT8WFYJNF7K6DXXXJLJVN

我需要输出为
RXMWANT8WFYJNF7K6DXXXJLJVN

我尝试了
tr
sed
,但是
tr
删除了输出中需要的一些字符<代码>sed因为前斜杠给我带来了麻烦

删除字符串的
/diag/PeerManager/list?deviceid=
部分的快速方法是什么? 谢谢

这对我很有用:

sed 's/.*deviceid=\([^&]*\).*/\1/'
例如:

$ echo '/diag/PeerManager/list?deviceid=RXMWANT8WFYJNF7K6DXXXJLJVN' | sed 's/.*deviceid=\([^&]*\).*/\1/'
RXMWANT8WFYJNF7K6DXXXJLJVN

这不是最可靠的解决方案,但如果您有一组永远不会改变的固定输入,它可能已经足够好了。

使用
awk
的一种方法,如果每行上只出现一次
=

awk -F= '{ print $2 }' file.txt
结果:

RXMWANT8WFYJNF7K6DXXXJLJVN
使用等号作为字段分隔符 如果您知道GET始终只有一个参数(在本例中为deviceid),那么您可以使用等号作为标准剪切实用程序的字段分隔符。例如:

$ echo '/diag/PeerManager/list?deviceid=RXMWANT8WFYJNF7K6DXXXJLJVN' |
    cut -d= -f2-
RXMWANT8WFYJNF7K6DXXXJLJVN
那么:

$ echo /diag/PeerManager/list?deviceid=RXMWANT8WFYJNF7K6DXXXJLJVN | sed 's/^.*=//'
RXMWANT8WFYJNF7K6DXXXJLJVN
echo“/diag/PeerManager/list?deviceid=RXMWANT8WFYJNF7K6DXXXJLJVN”| sed-n's:/[a-zA-Z]/[a-zA-Z]/[a-zA-Z]?[a-zA-Z]=::p'


这应该能奏效。我选择冒号作为分隔符,因为它不会导致任何正斜杠问题。这就对它将要接收的输入类型做了很多假设,特别是它将只包含三个反斜杠,它们之间有小写和大写字母,一系列以问号结尾的字母,另一系列以等号结尾的字母。然后删除这些项目并打印剩余的字符(您的设备id)。

如果您能更准确地了解您想要做的事情,这会有所帮助。删除第一个
=
之前的所有内容?如果字符串恰好是这样开始的,请精确删除前缀
/diag/PeerManager/list?deviceid=
?像解析URL一样解析字符串,在查询部分识别名称/值对,并提取
deviceid
的值?完全是别的吗?嗨,谢谢你,很抱歉没有提供细节。是的,我想完全删除“/diag/PeerManager/list?deviceid=”行的一部分,或者删除=符号之前的所有内容,也会得到我想要的东西。谢谢!我需要好好吃我的排骨。非常感谢!!