文件_1
Group Country Lang
IT USA ENG
文件_2
EMPID STOREID
1001 1400
1002 1401
1003 1401
如果我使用
paste -d'\t' File_1 File_2
我明白了
Group^ICountry^ILang^IEMPID^ISTOREID$
IT^IUSA^IENG^I1001^I1400$
^I1002^I1401$
^I1003^I1401$
当我试图得到这样的东西时
Group Country Lang EMPID STOREID
IT USA ENG 1001 1400
IT USA ENG 1002 1401
IT USA ENG 1003 1401
请建议
答案1
$ awk -v OFS='\t' 'NR==FNR{a[FNR==1]=$0; next} {print a[FNR==1], $0}' file1 file2
Group Country Lang EMPID STOREID
IT USA ENG 1001 1400
IT USA ENG 1002 1401
IT USA ENG 1003 1401
上面只是使用比较“这是文件的第一行”( FNR==1
) 的 1 或 0 结果来索引数组,这样当文件 1 的第一行是文件 2 和文件 2 的每隔一行与文件 1 的第二行关联的索引 0。它在任何 awk 中的行为方式都相同。
答案2
您可以用于awk
此任务。
awk '
FNR == NR {buf[NR] = $0; next}
{print (FNR==1 ? buf[1] : buf[2]) "\t" $0}
' file1 file2
解析第一个文件 ( ) 时保存标题和行,FNR==NR
并与第二个文件的每一行一起打印适当的前缀。
输出:
Group Country Lang EMPID STOREID
IT USA ENG 1001 1400
IT USA ENG 1002 1401
IT USA ENG 1003 1401
答案3
使用 GNU awk 尝试一下这一行:
$ awk 'FNR==NR {a[NR]=$0;nrow=FNR;next} NR==nrow+1 {print a[1],$0;next} {print a[2],$0}' data1 data2
Group Country Lang EMPID STOREID
IT USA ENG 1001 1400
IT USA ENG 1002 1401
IT USA ENG 1003 1401
和:
$ cat data1
Group Country Lang
IT USA ENG
$ cat data2
EMPID STOREID
1001 1400
1002 1401
1003 1401