bash - 如何使用多个分隔符解析
问题描述
我有这样的行:
package:/data/app/com.bskyb.skynews.android-XZdcB7swzPqeBcgUp2P0JQ==/base.apk=com.bskyb.skynews.android
注意两个“=”。“=”是分隔符,但有时可以有 1..n 个“=”。
我如何使用 awk 进行解析,必须是 awk,这样我才能获得 1.“package:”之后的元素,直到并包括最后一个“=”,然后 2.最后一个“=”之后的元素。
所以使用上面我会得到
/data/app/com.bskyb.skynews.android-XZdcB7swzPqeBcgUp2P0JQ=
/base.apk=com.bskyb.skynews.android
解决方案
使用GNU
awk,您可以使用捕获复制sed
替换。
$ awk '{print gensub(/.*:([^=]+=?)=(.*)/,"\\1\n\\2", 1)}' file
/data/app/com.bskyb.skynews.android-XZdcB7swzPqeBcgUp2P0JQ=
/base.apk=com.bskyb.skynews.android
推荐阅读
- java - DynamoDBLocal 错误:com.amazonaws.services.dynamodbv2.local.embedded 包不存在
- spring - Live reload for thymeleaf template
- swift - AVAssetExportSession 在 IOS 13 上失败,将音频和视频混合在一起
- javascript - Adjusting the height and width of a screenshot with html2canvas?
- javascript - 延迟在 IE 11 上保存会话变量?
- python - 有没有一种pythonic方法可以在两个数据帧上应用相同的操作?
- r - Shiny Map -sliderInput 仅显示来自 pickerInput 的用户选择
- javascript - HTML / Javascript,具有多个过滤器的表格,再次(Vanilla JS)
- javascript - 在使用 Anzyme 和 Jest 的 ReactNatve 测试中未检测到 TouchableOpacity
- json - 如何检查 JSONB 列表中是否存在值