извлечь некоторые значения из файла № 1 и другие из файла № 2 и распечатать их в файл № 3 - PullRequest
0 голосов
/ 09 ноября 2018

Я надеюсь, что вы можете помочь с этим вопросом, у меня есть два файла, в каждом есть несколько строк, которые мне нужны в третьем файле. Но мне нужно взять целые строки (со значениями в 5 или 6 столбцах) из файла № 1 и другие из файла № 2 и сохранить их в файле № 3 (с сохранением номера строки). Пример:

Файл 1

 1. mike
 2. linda
 3. matt
 4. eric
 5. emma

Файл 2

 1. beth
 2. shelly
 3. michael
 4. andy
 5. theo

Файл 3 (вывод)

 1. mike
 2. shelly
 3. matt
 4. andy
 5. emma

Итак, мне нужно извлечь значения строк 2 и 4 (из файла № 2) и распечатать их в третьем файле, сохраняя содержимое строк 1, 3 и 5 из файла № 1.

Я попробовал это с помощью sed (простой пример):

sed -n -e 1,3p -e 5p file1.txt > file3.txt

Это возьмет строки 1,3 и 5 из моего файла № 1 и напечатает их в файле № 3, но я не знаю, как получить строки из файла № 2 (2 и 4) и добавить их в файл # 3.

enter image description here

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

sed, вероятно, не очень подходящий инструмент для этого. Как насчет

paste in1 in2 | awk -F '\t' '{ print $(1+(1+NR)%2) }'

Переменная Awk NR - это текущий номер строки ввода, а оператор по модулю NR%2 триггеры между 1 и 0. Нам нужно выполнить пару дополнений, чтобы получить триггер между 1 и 2. Тогда легко распечатать чередующиеся столбцы с вывода paste.

0 голосов
/ 09 ноября 2018

Использование grep для аннотирования имен файлов:

grep -H '.*' in1 in2 | sed '/in1:[24]/d;/in2:[135]/d;s/[^:]*://' | sort

Выход:

1. mike
2. shelly
3. matt
4. andy
5. emma
...