複数列の並べ替え

複数列の並べ替え

私の元のデータは -

   id=ABC name=Banana DB Connection type=FruitMarket
    XYZ_1 ABC.xml
    XYZ_2 ABC.xml
    XYZ_3 ABC.xml
    "Fruits/Mango/#Common"
    "Fruits/Mango/#Bizzare"
    "Fruits/Mango/#Common"

    id=EFG name=FruitHouse type=jms
    XYZ_4 EFG.xml
    "Fruits/Plum Orange"

    id=JKL name=JMSWriteConnect type=jms
    XYZ_4 JKL.xml
    "Fruits/Plum Orange"

    id=TMZ name=Banana DB Connection type=FruitMarket
    XYZ_5 TMZ.xml
    "Fruits/Mango/Backup/Apple"

    id=LDL name=Banana DB Market-Connect type=FruitMarket
    XYZ_6 LDL.xml
    XYZ_7 LDL.xml
    XYZ_8 LDL.xml
    XYZ_9 LDL.xml
    XYZ_10 LDL.xml
    XYZ_11 LDL.xml
    "Fruits/Mango/#Common"
    "Fruits/Mango/#Common"
    "VEG/Mango/#NOT"
    "Fruits/Mango/#Common"
    "Fruits/Mango/#NOT"
    "Fruits/Mango/#Common"

シェルスクリプト(awk、sed、bash)を使用して(最終出力)にソートしたいです。

   id=ABC name=Banana DB Connection type=FruitMarket
    XYZ_1 ABC.xml "Fruits/Mango/#Common"
    XYZ_2 ABC.xml "Fruits/Mango/#Bizzare"
    XYZ_3 ABC.xml "Fruits/Mango/#Common"

    id=EFG name=FruitHouse type=jms
    XYZ_4 EFG.xml "Fruits/Plum Orange"

    id=JKL name=JMSWriteConnect type=jms
    XYZ_4 JKL.xml "Fruits/Plum Orange"

    id=TMZ name=Banana DB Connection type=FruitMarket
    XYZ_5 TMZ.xml "Fruits/Mango/Backup/Apple"

    id=LDL name=Banana DB Market-Connect type=FruitMarket
    XYZ_6 LDL.xml "Fruits/Mango/#Common"
    XYZ_7 LDL.xml "Fruits/Mango/#Common"
    XYZ_8 LDL.xml "VEG/Mango/#NOT"
    XYZ_9 LDL.xml "Fruits/Mango/#Common"
    XYZ_10 LDL.xml "Fruits/Mango/#NOT"
    XYZ_11 LDL.xml "Fruits/Mango/#Common"

行内のスペースは重要ではありません。どんな手がかりも役に立ちます。

ベストアンサー1

レコードごとに常に1つのヘッダー行(id / name / type)のみがあり、レコード本文は同じ数のXYZ_n LDL.xml行とカテゴリ(果物/野菜)行で構成されていると仮定すると、次のようgawkにGNU awk()を使用できます。 。ショートモードダウン、行/変数/コプロセスのインポートpr2列ページングコマンドで通信します。

  BEGIN {
    RS = ""; FS = "\n"; 
    cmd = "pr -T -s -2"
  }
  {
    print $1; 
    for(i=2;i<=NF;i++) 
      print $i |& cmd; 
    close(cmd,"to"); 
    while((cmd |& getline line) > 0) 
      print line; 
    close(cmd); 
    print ""
  }
' file
   id=ABC name=Banana DB Connection type=FruitMarket
    XYZ_1 ABC.xml       "Fruits/Mango/#Common"
    XYZ_2 ABC.xml       "Fruits/Mango/#Bizzare"
    XYZ_3 ABC.xml       "Fruits/Mango/#Common"

    id=EFG name=FruitHouse type=jms
    XYZ_4 EFG.xml       "Fruits/Plum Orange"

    id=JKL name=JMSWriteConnect type=jms
    XYZ_4 JKL.xml       "Fruits/Plum Orange"

    id=TMZ name=Banana DB Connection type=FruitMarket
    XYZ_5 TMZ.xml       "Fruits/Mango/Backup/Apple"

    id=LDL name=Banana DB Market-Connect type=FruitMarket
    XYZ_6 LDL.xml       "Fruits/Mango/#Common"
    XYZ_7 LDL.xml       "Fruits/Mango/#Common"
    XYZ_8 LDL.xml       "VEG/Mango/#NOT"
    XYZ_9 LDL.xml       "Fruits/Mango/#Common"
    XYZ_10 LDL.xml      "Fruits/Mango/#NOT"
    XYZ_11 LDL.xml      "Fruits/Mango/#Common"

おすすめ記事