いくつかのファイルを読み、出力をソートしたいと思います。
たとえば、
cat example.conf
Order: 0
Package: example
cat another.conf
Order: 2
Package: another
cat file.conf
Order: 1
Package: file
次のように出力しますawk '/Order|Package/' conf/*.conf
。
Order: 2
Package: another
Order: 0
Package: example
Order: 1
Package: file
Order:
出力を次の数字でソートしますが、行間の関係を壊さないようにします。たとえば、次のようになります。
Order: 0
Package: example
Order: 1
Package: file
Order: 2
Package: another
ベストアンサー1
awk
GNU> 4.0を使用し、そのOrder
レコードが常にPackage
このレコードの前にあると仮定すると
gawk '/^Order/ {order = $2} /^Package/ {p[order] = $0}
END {
PROCINFO["sorted_in"] = "@ind_num_asc"
for (i in p) {print "Order:", i; print p[i]}
}
' conf/*.conf
Order: 0
Package: example
Order: 1
Package: file
Order: 2
Package: another
高齢者の場合は、以下をgawk
使用できますasorti
。
gawk '/^Order/ {order = $2} /^Package/ {p[order] = $0}
END {
n = asorti(p,b)
for (i=1;i<=n;i++) {print "Order:", i; print p[b[i]]}
}
' conf/*.conf