如果两个文件的第一列匹配,我想在FileA的最后一列添加FileB的第2列。
FILEA
12345,4567,12345,4567
56789,1234,56789,1234
65789,1234,23244,2324
FILEB
12345,MMS
12345,INTERNET
12345,SSS
56789,MS
56789,INTERNET
输出
12345,4567,12345,4567,MMS,INTERNET,SSS
56789,1234,56789,1234,MS,INTERNET
65789,1234,23244,2324
到目前为止,我有这个awk
awk -F, 'NR==FNR{a[$1]=$2;next} {$5=a[$1]}1' OFS=, FileB FileA | tr -d ' '
导致
12345,4567,12345,4567,SSS
56789,1234,56789,1234,INTERNET
答案 0 :(得分:1)
awk -F, 'NR==FNR{a[$1]=$0;next}a[$1]{a[$1]=a[$1]","$2}END{for(i in a)print a[i]}' filea fileb
答案 1 :(得分:0)
你很亲密:
var playBtn = document.getElementById('play');
var playSound = function() {
audio.play();
};
playBtn.addEventListener('click', playSound, false);
stopBtn.addEventListener('click', function(){audio.pause()}, false);
此方法可确保输出中的行顺序与$ awk -F, 'NR==FNR{a[$1]=a[$1](a[$1]?",":"")$2;next} a[$1]{$5=a[$1]}1' OFS=, FileB FileA
12345,4567,12345,4567,MMS,INTERNET,SSS
56789,1234,56789,1234,MS,INTERNET
65789,1234,23244,2324
中的行顺序相同。
FileA
在这种情况下阅读第一个文件NR==FNR{a[$1]=a[$1](a[$1]?",":"")$2;next}
时,我们会将FileB
附加到$2
的值。如果a[$1]
已有值,我们会在a[$1]
之前添加逗号。
添加逗号与否的选择是使用三元语句:$2
。如果(a[$1]?",":"")
为真(非空),则此语句返回a[$1]
。如果没有,则返回空字符串","
。
""
如果a[$1]{$5=a[$1]}
不为空,请将其设为a[$1]
。
$5
打印行