私の元のデータは -
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()を使用できます。 。ショートモードダウン、行/変数/コプロセスのインポートpr
2列ページングコマンドで通信します。
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"