Объединить File1 с File2 (продолжайте добавлять из File1 в File2, пока не останется больше строк) - PullRequest
1 голос
/ 02 апреля 2019

Я не могу найти решение. Так вот в чем проблема. Результат должен быть 100 строк (File1) с содержанием из File2, повторяющимся 25 раз. Я хочу присоединиться к содержимому, даже если количество строк не равно. Продолжайте повторять, включая строки из File2, пока не будет встречено количество строк из File1.

File1:

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

File2:

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

Я хочу объединить следующие файлы, чтобы получить следующий ожидаемый результат:

file3:

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

Примечание: после завершения 4 строк из File2, начните снова с первой строки, затем повторите.

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

Ответы [ 2 ]

2 голосов
/ 02 апреля 2019

Пример в вашем вопросе не ясен, но я думаю, это то, что вы пытаетесь сделать:

$ 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 голос
/ 02 апреля 2019

Не могли бы вы попробовать следующее.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...