【问题标题】:How to extract a specific data/string between two backslash in a json data如何在json数据中的两个反斜杠之间提取特定数据/字符串
【发布时间】:2019-05-13 08:20:20
【问题描述】:

我只想从以下代码中提取载体部分(u0026carrier=Jio%204G):

/v1.6/32359233/init?os=android%20%3A%208.0.0%20%3A%20O%20%3A%20sdk%3D26\u0026model=SM-J810G\u0026carrier=Jio%204G\u0026ct=13\u0026bundle=io.teslatech.callbreak\u0026mcc=405870\u0026d=1.75\u0026screen=1280%2C720\u0026optout=0\u0026ts=1556672633159\u0026manufacturer=samsung\u0026locale=en\u0026di=5.383004822116628\u0026play_version=11400000\u0026admob_enabled=true\u0026facebook%20enabled=false\u0026mopub%20enabled=true\u0026unit_id=unit-3943\u0026unit_id=unit-3944\u0026unit_id=float-3335\u0026unit_id=float-3336\u0026unit_id=float-3339","method":"GET","version":"v1.6","prefix":"hit","hostname":"adxserver-7d6bcd74d8-5zxsn

运营商的内容长度不同。因此。无论长度如何,我都想提取两个反斜杠之间存在的数据。

【问题讨论】:

  • 如果您能帮助我使用正则表达式代码来提取运营商名称(= 符号后出现一个),这将很有帮助。例如:Jio%204G

标签: regex shell


【解决方案1】:
perl -lne 'print $1 if(/.*?(\\u[^\\u]+carrier=[^\\u]+)\\u.*/)' your_file

测试如下:

$ cat temp
/v1.6/32359233/init?os=android%20%3A%208.0.0%20%3A%20O%20%3A%20sdk%3D26\u0026model=SM-J810G\u0026carrier=Jio%204G\u0026ct=13\u0026bundle=io.teslatech.callbreak\u0026mcc=405870\u0026d=1.75\u0026screen=1280%2C720\u0026optout=0\u0026ts=1556672633159\u0026manufacturer=samsung\u0026locale=en\u0026di=5.383004822116628\u0026play_version=11400000\u0026admob_enabled=true\u0026facebook%20enabled=false\u0026mopub%20enabled=true\u0026unit_id=unit-3943\u0026unit_id=unit-3944\u0026unit_id=float-3335\u0026unit_id=float-3336\u0026unit_id=float-3339","method":"GET","version":"v1.6","prefix":"hit","hostname":"adxserver-7d6bcd74d8-5zxsn

$ perl -lne 'print $1 if(/.*?(\\u[^\\u]+carrier=[^\\u]+)\\u.*/)' temp
\u0026carrier=Jio%204G
$

【讨论】:

    猜你喜欢
    • 2015-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-21
    • 1970-01-01
    相关资源
    最近更新 更多