首页 > 解决方案 > 如何使用多个分隔符解析

问题描述

我有这样的行:

package:/data/app/com.bskyb.skynews.android-XZdcB7swzPqeBcgUp2P0JQ==/base.apk=com.bskyb.skynews.android

注意两个“=”。“=”是分隔符,但有时可以有 1..n 个“=”。

我如何使用 awk 进行解析,必须是 awk,这样我才能获得 1.“package:”之后的元素,直到并包括最后一个“=”,然后 2.最后一个“=”之后的元素。

所以使用上面我会得到

  1. /data/app/com.bskyb.skynews.android-XZdcB7swzPqeBcgUp2P0JQ=
  2. /base.apk=com.bskyb.skynews.android

标签: bashparsingawk

解决方案


使用GNUawk,您可以使用捕获复制sed替换。

$ awk '{print gensub(/.*:([^=]+=?)=(.*)/,"\\1\n\\2", 1)}' file

/data/app/com.bskyb.skynews.android-XZdcB7swzPqeBcgUp2P0JQ=
/base.apk=com.bskyb.skynews.android

推荐阅读