将File1与File2合并(保持从File1追加到File2直到没有更多行)

时间:2019-04-02 15:54:54

标签: bash awk sed

我找不到解决方案。 所以这就是问题所在。 结果应为100行(文件1),文件2中的内容重复25次。 我想要的是即使行数不相等也要加入内容。继续重复包含File2中的行,直到满足File1中的行数为止。

文件1:

test1@domain.com
test2@domain2.com
test3@domain3.com
test4@domain4.com

文件2:

A1,B11
A2,B22
A3,B33
A4,B44

我想要的是在下面合并文件以达到以下预期结果:

文件3:

test1@domain.com,A1,B12
test2@domain2.com,A2,B22
test3@domain3.com,A3,B33
test4@domain4.com,A4,B44

请注意:在完成File2中的4行之后,从第一行再次开始,然后重复。

test5@domain5.com,A1,B12
test6@domain6.com,A2,B22
test7@domain7.com,A3,B33
test8@domain8.com,A4,B44

2 个答案:

答案 0 :(得分:2)

您问题中的示例尚不清楚,但我认为这是您要执行的操作:

$ awk -v OFS=',' 'NR==FNR{a[++n]=$0;next} {print $0, a[(FNR-1)%n+1]}' file2 file1
test1@domain.com,A1,B11
test2@domain2.com,A2,B22
test3@domain3.com,A3,B33
test4@domain4.com,A4,B44
test5@domain5.com,A1,B11
test6@domain6.com,A2,B22

上面是针对此输入运行的:

$ cat file1
test1@domain.com
test2@domain2.com
test3@domain3.com
test4@domain4.com
test5@domain5.com
test6@domain6.com
$
$ cat file2
A1,B11
A2,B22
A3,B33
A4,B44

答案 1 :(得分:1)

请您尝试以下。

awk '
BEGIN{
  OFS=","
}
FNR==NR{
  a[++count]=$0
  next
}
{
  count_curr++
  count_curr=count_curr>count?1:count_curr
  print a[count_curr],$0
}
'  Input_file2  Input_file1