title: Print string with variables in AWK
body: <p>I am trying to parse android package list from phone.
  Sample data is as shown below.</p>
  <pre><code>  Package [com.google.android.as] (9faf0bc):
      userId=10320
      pkg=Package{299f845 com.google.android.as}
      codePath=/system/priv-app/DevicePersonalizationServices
      resourcePath=/system/priv-app/DevicePersonalizationServices
      legacyNativeLibraryDir=/system/priv-app/DevicePersonalizationServices/lib
      primaryCpuAbi=arm64-v8a
      secondaryCpuAbi=null
      versionCode=4371429 minSdk=30 targetSdk=30
      versionName=R.3.sysimg.oem.325908743
      splits=[base]
      apkSigningVersion=0
      applicationInfo=ApplicationInfo{299f845 com.google.android.as}
      flags=[ SYSTEM HAS_CODE ALLOW_CLEAR_USER_DATA ALLOW_BACKUP ]
      privateFlags=[ PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION ALLOW_AUDIO_PLAYBACK_CAPTURE PRIVILEGED PRIVATE_FLAG_ALLOW_NATIVE_HEAP_POINTER_TAGGING ]
      forceQueryable=false
      queriesPackages=[]
      dataDir=/data/user/0/com.google.android.as
      supportsScreens=[small, medium, large, xlarge, resizeable, anyDensity]
      timeStamp=2008-12-31 20:30:00
      firstInstallTime=2008-12-31 20:30:00
      lastUpdateTime=2008-12-31 20:30:00
      signatures=PackageSignatures{f91eb9a version:0, signatures:[], past signatures:[]}
      installPermissionsFixed=false
      pkgFlags=[ SYSTEM HAS_CODE ALLOW_CLEAR_USER_DATA ALLOW_BACKUP ]
      install permissions:
        android.permission.MODIFY_AUDIO_ROUTING: granted=true
        android.permission.SYSTEM_ALERT_WINDOW: granted=true
        &lt;&lt; multiple lines &gt;&gt;
        android.permission.READ_DEVICE_CONFIG: granted=true
        android.permission.READ_OEM_UNLOCK_STATE: granted=true
      User 0: ceDataInode=0 installed=true hidden=false suspended=false distractionFlags=0 stopped=false notLaunched=false enabled=0 instant=false virtual=false
        gids=[3002, 3003, 3001]
      User 150: ceDataInode=0 installed=true hidden=false suspended=false distractionFlags=0 stopped=false notLaunched=false enabled=0 instant=false virtual=false
        gids=[3002, 3003, 3001]
    Package [com.google.android.gm] (a066ccb):
      userId=10230
      pkg=Package{9e45ca8 com.google.android.gm}
      codePath=/system/app/Gmail2
      resourcePath=/system/app/Gmail2
      legacyNativeLibraryDir=/system/app/Gmail2/lib
      primaryCpuAbi=null
      secondaryCpuAbi=null
      versionCode=62209002 minSdk=21 targetSdk=29
      versionName=2020.05.31.316831277.release
      splits=[base]
      apkSigningVersion=0
      applicationInfo=ApplicationInfo{9e45ca8 com.google.android.gm}
      flags=[ SYSTEM HAS_CODE ALLOW_CLEAR_USER_DATA ALLOW_BACKUP KILL_AFTER_RESTORE RESTORE_ANY_VERSION ]
      privateFlags=[ PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE ALLOW_AUDIO_PLAYBACK_CAPTURE PRIVATE_FLAG_REQUEST_LEGACY_EXTERNAL_STORAGE HAS_DOMAIN_URLS PRIVATE_FLAG_ALLOW_NATIVE_HEAP_POINTER_TAGGING ]
      forceQueryable=false
      queriesIntents=[Intent { act=android.support.customtabs.action.CustomTabsService }, Intent { act=android.intent.action.VIEW cat=[android.intent.category.BROWSABLE] dat=http://www.example.com/... }, Intent { act=android.intent.action.VIEW cat=[android.intent.category.BROWSABLE] dat=http://www.example.com/... }, Intent { act=android.support.customtabs.action.CustomTabsService }]
      dataDir=/data/user/0/com.google.android.gm
      supportsScreens=[small, medium, large, xlarge, resizeable, anyDensity]
      usesLibraries:
        android.test.base
      usesOptionalLibraries:
        org.apache.http.legacy
      timeStamp=2008-12-31 20:30:00
      firstInstallTime=2008-12-31 20:30:00
      lastUpdateTime=2008-12-31 20:30:00
      signatures=PackageSignatures{c66d3c1 version:0, signatures:[], past signatures:[]}
      installPermissionsFixed=false
      pkgFlags=[ SYSTEM HAS_CODE ALLOW_CLEAR_USER_DATA ALLOW_BACKUP KILL_AFTER_RESTORE RESTORE_ANY_VERSION ]
      declared permissions:
        com.google.android.gm.email.permission.READ_ATTACHMENT: prot=signature
        com.google.android.gm.email.permission.ACCESS_PROVIDER: prot=signature
        &lt;&lt; multiple lines &gt;&gt;      
        com.android.launcher.permission.INSTALL_SHORTCUT: granted=true
        com.google.android.gms.permission.REQUEST_SCREEN_LOCK_COMPLEXITY: granted=true
        android.permission.WAKE_LOCK: granted=true
      User 0: ceDataInode=0 installed=true hidden=false suspended=false distractionFlags=0 stopped=false notLaunched=false enabled=0 instant=false virtual=false
        gids=[3003]
      User 150: ceDataInode=0 installed=true hidden=false suspended=false distractionFlags=0 stopped=false notLaunched=false enabled=0 instant=false virtual=false
        gids=[3003]
  </code></pre>
  <p>To parse data in AWK, I am using the command as under</p>
  <pre><code>dumpsys package | awk '/^[ ]*Package \[.*\] (.*)/ { i = index($0, &quot;[&quot;) + 1; pkg = substr($0, i, index($0, &quot;]&quot;) - i); } /[ ]*versionCode=/ /[ ]*versionName=/  /[ ]*firstInstallTime=/ /[ ]*lastUpdateTime=/ { { print &quot;START PackageName=&quot; pkg $0 &quot; END&quot;; pkg = &quot;&quot;; } }'
  </code></pre>
  <p>Output of the above command is as under</p>
  <pre><code>versionCode=4371429 minSdk=30 targetSdk=30    versionName=R.3.sysimg.oem.325908743    firstInstallTime=2008-12-31 20:30:00START PackageName=com.google.android.as    lastUpdateTime=2008-12-31 20:30:00 END    versionCode=62209002 minSdk=21 targetSdk=29    versionName=2020.05.31.316831277.release    firstInstallTime=2008-12-31 20:30:00START PackageName=com.google.android.gm    lastUpdateTime=2008-12-31 20:30:00 END
  </code></pre>
  <p>The problem is the order of data output. The expected output should be in order between START and END as being printed. I am not able to get the structured data as desired.
  Please advise.</p>