0

我很困惑如何删除其中包含正斜杠和问号的字符串的一部分。

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

我需要输出RXMWANT8WFYJNF7K6DXXXJLJVN

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

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

4

5 回答 5

1

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

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

于 2012-07-19T02:03:41.900 回答
0

这对我有用:

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

例子:

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

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

于 2012-07-19T01:44:32.277 回答
0

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

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

结果:

RXMWANT8WFYJNF7K6DXXXJLJVN
于 2012-07-19T01:48:33.920 回答
0

使用等号作为字段分隔符

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

$ echo '/diag/PeerManager/list?deviceid=RXMWANT8WFYJNF7K6DXXXJLJVN' |
    cut -d= -f2-
RXMWANT8WFYJNF7K6DXXXJLJVN
于 2012-07-19T01:49:45.543 回答
0

怎么样:

$ echo /diag/PeerManager/list?deviceid=RXMWANT8WFYJNF7K6DXXXJLJVN | sed 's/^.*=//'
RXMWANT8WFYJNF7K6DXXXJLJVN
于 2012-07-19T01:57:03.433 回答