如何解析多个定界符

时间:2019-02-06 22:20:39

标签: bash parsing awk

我有这样的一行:

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

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

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

所以使用上面的代码我会得到

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

1 个答案:

答案 0 :(得分:2)

使用GNU可以用捕获功能复制sed替代品。

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

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