に同じ値で行をマージします:たとえば私がどのように見えるファイルのn個持っている最初の列
PACKAGE_LIST_DEV=rpm1 rpm2 rpm3
PACKAGE_LIST_PROD=rpm1 rpm2 rpm3
:
はFile1:
PACKAGE_LIST_DEV=rpm1 rpm2 rpm3
PACKAGE_LIST_PROD=rpm1 rpm2 rpm3
File2の:
をPACKAGE_LIST_DEV=rpm4 rpm5
PACKAGE_LIST_PROD=rpm4 rpm5
ファイル3:
PACKAGE_LIST_DEV=rpm6 rpm7
PACKAGE_LIST_PROD=rpm6 rpm7
など..
そして、私は、次の取得したいのですが:
PACKAGE_LIST_DEV=rpm1 rpm2 rpm3 rpm4 rpm5 rpm6 rpm7
PACKAGE_LIST_PROD=rpm1 rpm2 rpm3 rpm4 rpm5 rpm6 rpm7
PACKAGE_LISTは、最初の列内のすべてのファイルで同じである、それが生成する必要がありそうだとすれば結合された線の他のすべての部分を含む各1行。ここで
は、私が試したものです:
# Concatenate all files together
cat File1 File2 File3 ... Filen > new_file
PACKAGE_LIST_DEV=rpm1 rpm2 rpm3
PACKAGE_LIST_PROD=rpm1 rpm2 rpm3
PACKAGE_LIST_DEV=rpm4 rpm5
PACKAGE_LIST_PROD=rpm4 rpm5
PACKAGE_LIST_DEV=rpm6 rpm7
PACKAGE_LIST_PROD=rpm6 rpm7
# Join PACKAGE_LIST lines together
awk -F'=' -v OFS='' '{x=$1;$1="=";a[x]=a[x]$0}END{for(x in a)print x,a[x]}' new_file
PACKAGE_LIST_DEV=rpm1 rpm2 rpm3=rpm4 rpm5=rpm6 rpm7
PACKAGE_LIST_PROD=rpm1 rpm2 rpm3=rpm4 rpm5=rpm6 rpm7
ファイル内のキー・フィールドがソートされている場合は、余分=そこ