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'

これでうまくいくはずです。スラッシュで問題が発生しないため、区切り文字としてコロンを選択しました。これは、受信する入力のタイプについて多くの仮定を立てます。具体的には、小文字と大文字の間に3つのバックスラッシュ、疑問符で終わる一連の文字、等号で終わる別の一連の文字のみが含まれるということです。サイン。これにより、それらのアイテムが削除され、残りの文字 (デバイス 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に が 1 つしかない場合、を使用する 1 つの方法:=

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

結果:

RXMWANT8WFYJNF7K6DXXXJLJVN
于 2012-07-19T01:48:33.920 に答える
0

フィールド区切り文字として等号を使用する

GETクエリ文字列に常に 1 つのパラメーター (この場合は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 に答える