我有2个文件需要合并并生成第3个文件。请在下面找到示例
文件1
xab=p11
aab=p12
aac=p23
xac=p15
yab=p16
文件2
aab=p17
xac=p25
yyc=p22
我想保留第一个文件的顺序并追加第二个文件。结果应为:
文件3
xab=p11
aab=p17
aac=p23
xac=p25
yab=p16
yyc=p22
我尝试了许多方法,但无法获得一个更简单,易于理解的解决方案。我在StackOverflow中找到的那个正在工作,但是很难理解并向第三方解释。我找到的解决方案是
cat en_us.txt en_US2.txt | tr -s '\n' | awk -F= '!a[$1]{b[++i]=$1} {a[$1]=$0;} END{for(j=1;j<=i;j++){print a[b[j]]}}'
任何人都可以尝试这种方法并获得可读的解决方案(可能是未使用的解决方案awk
)
$ cat tst.awk
BEGIN { FS=OFS="=" }
{ key=$1; val=$2 }
NR==FNR {
keys[++numKeys] = key
key2val[key] = val
next
}
{
if ( key in key2val ) {
val = key2val[key]
delete key2val[key]
}
print key, val
}
END {
for (keyNr=1; keyNr<=numKeys; keyNr++) {
key = keys[keyNr]
if (key in key2val) {
print key, key2val[key]
}
}
}
$ awk -f tst.awk file2 file1
xab=p11
aab=p17
aac=p23
xac=p25
yab=p16
yyc=p22
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句