删除其中包含正斜杠的字符串的一部分

时间:2012-07-19 01:34:30

标签: string parsing sed tr

我很难理解如何删除其中包含正斜杠和问号的字符串部分。

示例:/diag/PeerManager/list?deviceid=RXMWANT8WFYJNF7K6DXXXJLJVN

我需要输出为RXMWANT8WFYJNF7K6DXXXJLJVN

我已尝试trsed,但tr删除了输出中我需要的一些字符。 sed由于正斜杠而给我带来麻烦。

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

5 个答案:

答案 0 :(得分:1)

  

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

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

答案 1 :(得分:0)

这对我有用:

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

示例:

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

这不是最强大的解决方案,但是如果你有一组永远不会改变的固定输入,那么它可能就足够了。

答案 2 :(得分:0)

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

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

结果:

RXMWANT8WFYJNF7K6DXXXJLJVN

答案 3 :(得分:0)

使用等号作为字段分隔符

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

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

答案 4 :(得分:0)

怎么样:

$ echo /diag/PeerManager/list?deviceid=RXMWANT8WFYJNF7K6DXXXJLJVN | sed 's/^.*=//'
RXMWANT8WFYJNF7K6DXXXJLJVN