我很难理解如何删除其中包含正斜杠和问号的字符串部分。
示例:/diag/PeerManager/list?deviceid=RXMWANT8WFYJNF7K6DXXXJLJVN
我需要输出为RXMWANT8WFYJNF7K6DXXXJLJVN
我已尝试tr
和sed
,但tr
删除了输出中我需要的一些字符。 sed
由于正斜杠而给我带来麻烦。
删除字符串/diag/PeerManager/list?deviceid=
部分的快速方法是什么?
谢谢!
答案 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