З єдиною awk
командою:
awk -F, '{getline f1 <"file2" ;print f1,$3,$4}' OFS=, file1
Отримайте рядок з file1 і збережіть його в локальну змінну f1
, потім надрукуйте рядок, який зберігається в, f1
і, нарешті, надрукуйте треті ( $3
) і вперед ( $3
) поля з файлу1, які повністю розділені комою ,
, і змініть OFS (роздільник вивідного поля [пробіл від за замовчуванням]) до коми ( ,
).
Коротка команда буде такою:
paste -d, file2 <(cut -d, -f3- file1)
А Б В Г
А Б В Г
А Б В Г
А Б В Г
вставити файл2, потім вирізати і вставити третій стовпець до наступного ( -f3-
) з файлу1.
З awk
і paste
(варіант А)
Нижче команда також копіює останні два стовпці ( C,D
) з файлу1 в кінці кожного рядка у файлі2:
paste -d',' file2 <(awk -F',' '{print $(NF-1)","$NF}' file1)
Вище вставте вміст file2, потім надрукуйте роздільник комами ( -d','
), потім вставте два останніх поля ( NF
це індекс останнього поля і $NF
це рядок, який є його індексом NF
. Так $(NF-1)
це друге поле перед останнім полем) з file1, коли цей індекс переосмислює або розбивається з комою глядача ( -F','
).
З awk
і paste
(варіант B)
Ця команда також така ж, як і вище ( $3
і $4
вказує на третє і четверте поле кожного рядка з файлу1):
paste -d',' file2 <(awk -F',' '{print $3","$4}' file1)
Або інше рішення з cut
командою:
paste -d, <(cut -d, -f1 file1) <(cut -d, -f2 file2) <(cut -d, -f3- file1)
Команда cut у наведеній вище команді спочатку вирізає перше поле ( -f1
яке індексується роздільником коми ( -d.
)) з file1 ( cut -d, -f1 file1
), потім вирізає та вставить друге поле file2 ( cut -d, -f2 file2
) і, нарешті, вирізає та вставить третій стовпчик ( -f3
) у параметри ( -
) знову з file1 ( cut -d, -f3- file1
).
Ця команда також повертає той самий результат:
paste -d, <(awk -F',' '{print $1}' file1) <(awk -F',' '{print $2}' file2) <(awk -F',' '{print $3","$4}' file1)
вставити друге поле з file1 ( awk -F',' '{print $1}' file1
), потім надрукувати кому ( -d,
), потім вставити другий стовпчик з file2 ( awk -F',' '{print $2}' file2
), нарешті знову вставити другий і останній стовпчик file1 ( awk -F',' '{print $3","$4}' file1
).