Intereting Posts
Совместимость с Airdrop Как создать загрузочный USB-сервер для Ubuntu Server? Tar удаленный каталог без ведущих ./ на файлы Включит ли Hyper-Threading два виртуальных полускоростных процессора? Драйвер беспроводной сети ndiswrapper не подключается к обнаруженной сети Wi-Fi не удалось установить centos на моем ноутбуке Windows 10, сделав его двойной загрузкой Plymouthd в BeagleBone Black initramfs завершается с ошибкой «Не удалось настроить базовую операционную среду» Зомби в баш ixgbe: увеличение производительности rx Сделать stdout и stderr буферизироваться одним и тем же буфером можно заморозить процесс в Linux и перезагрузить или выключить компьютер. Затем продолжайте процесс, который был заморожен? Синтаксический вопрос Shell с сложным расширением параметра Linux Mint file-chooser: показывать имя файла вместо строки пути? Могу ли я спасти любые данные, если один из двух дисков в LVM не удалось? Настройка разрешений SVN с помощью davsvnauthz

Как чередовать строки двух или более файлов?

Я попытался получить два файла в одном файле. Я попытался выполнить команду:

cat file1 file2 

но здесь данные file2 добавляются к file1 .

Мне нужна file1 1-я строка, за которой следует первая строка file2 , а вторая строка file1 вторая строка file2 и т. Д.

Может ли кто-нибудь сказать мне, как сделать это простым способом?

Для этого есть приложение!

 $ cat file1 file1 line1 file1 line2 $ cat file2 file2 line1 file2 line2 

Теперь, если вы передадите эти файлы в качестве аргументов для paste :

 $ paste -d' ' file1 file2 file1 line1 file2 line1 file1 line2 file2 line2 

Если по «file1 1-й строке, за которой следует первая строка file2, а вторая строка file1, вторая строка второго файла и т. Д.», Вы имеете в виду, что вам нужна новая строка между каждой вставкой, просто скопируйте параметр -d (разделитель).

 $ paste -d'\n' file1 file2 file1 line1 file2 line1 file1 line2 file2 line2 

POSIX Awk; это работает с произвольным количеством файлов, и файлы даже не должны иметь одинаковое количество строк. Сценарий продолжается до тех пор, пока все файлы не будут содержать строки:

 BEGIN { do { br = ch = 0 while (++ch < ARGC) if (getline < ARGV[ch]) { printf ch < ARGC - 1 ? $0 FS : $0 RS br = 1 } } while (br) } 
 paste -d '\n' file1 file2 > file3 

где file1 и file2 являются входными файлами, а file3 будет создан.