Linuxでgrepまたはawkを使用してxmlの文字列から値を抽出する方法

Linuxでgrepまたはawkを使用してxmlの文字列から値を抽出する方法

以下を含むファイルがあります。

DEVICE="7" PGMNR="24" VCONF="800"

このファイルからPGMNR="24""

PGMNR="24"行のどこにでも配置できます。行の開始、中間、または終了です。

この値を取得する方法がわかりません。

コメントのXMLの例:

<?xml version="1.0" encoding="utf-8"?>
<NT3Config>
  <System
      Dev="7"
      PGMNR="24"
      VCONF="800 800"
  />
  <WA-NT
      info="23 1 1 1 61 17 00"
      name="Soja T#1"
  />
  <WA-NT
      info="23 2 2 1 61 17 00"
      name="MatadorM"
  />
  <SCALE
      AdNr="0"
      Calib="0 0 0 0 0 0"
      Setting="0 0 0 0 0 0 0"
  />
  <SCALE
      AdNr="1"
      Calib="0 0 0 0 0 0"
      Setting="0 0 0 0 0 0 0"
  />
  <SCALE
      AdNr="2"
      Calib="0 0 0 0 0 0"
      Setting="0 0 0 0 0 0 0"
  />
  <GSM
      PIN=""
      PORT="0"
      TLF=""
  />
</NT3Config>

ベストアンサー1

grepPCRE()と組み合わせて使用​​できます-P

grep -Po 'PGMNR=\"\K[^"]+(?=\")' file.txt
  • PGMNR=\"PGMNR="その部分と一致し、\K一致を削除します。

  • [^"]+番号が含まれています

  • 幅が0の順方向予測モードでは、(?=\")数字の後に"

おすすめ記事