используйте paste
с настраиваемым разделителем \n
, т.е. перевод строки:
paste -d '\n' file1 file2 > file.out
или GNU-сед:
sed 'R file2' file1
или авк:
awk 'NR==FNR{a[NR]=$0;next} {print a[FNR]} 1' file1 file2
Спасибо большое
@LukášAltman добро пожаловать. в следующий раз, пожалуйста, опубликуйте свои усилия, а также
Не могли бы вы попробовать следующее решение, оно будет работать для более чем 2 входных_файлов, если у вас тоже есть.
awk 'FNR==NR{a[FNR]=$0;next} {a[FNR]=(a[FNR]?a[FNR] ORS:"")$0} END{for(i=1;i<=FNR;i++){print a[i]}}' Input_file1 Input_file2
Обновлено: Добавление еще одного общего решения, где мы могли бы передать ему N файлов, более того, НЕ предполагается, что количество строк во всех Input_file (ах) одинаково, оно получает максимальное количество строк из всех файлов и выводит соответствие строки (с номером строки во всех файлах) и будут печатать строки (которых, наконец, больше в любом файле), если файлы OP имеют это условие.
Допустим, у нас есть 3 файла с именами file1, file2 и file3 следующим образом.
cat Input_file1
1
5
4
cat Input_file2
44
65
56
cat Input_file3
1
2
3
4
5
6
Теперь следующий код.
awk '
prev!=FILENAME{
count=count>prev_count?count:prev_count
}
{
prev_count=FNR
}
FNR==1{
prev=FILENAME
}
FNR==NR{
a[FNR]=$0
next
}
{
a[FNR]=(a[FNR]?a[FNR] ORS:"")$0
}
END{
count=count>prev_count?count:prev_count
for(i=1;i<=count;i++){
print a[i]
}
}' Input_file1 Input_file2 Input_file3
Вывод будет следующим.
1
44
1
5
65
2
4
56
3
4
5
6
@ Лукаш Альтман, не могли бы вы попробовать вышеуказанные решения один раз и дайте мне знать, помогут ли они здесь?
Опубликуйте свои исследования также