bash вырезать столбцы в один файл и сохранить в конец другого файла

Я хотел бы вырезать две колонки из одного файла и наклеить их на конец второго файла. В двух файлах одинаковое количество строк

file1.txt
1  2  3  4  5  6  7  8  9  10  
1  2  3  4  5  6  7  8  9  10
1  2  3  4  5  6  7  8  9  10

file2.txt
a  b  c  d  e  f  g  h i  j
a  b  c  d  e  f  g  h i  j
a  b  c  d  e  f  g  h i  j
a  b  c  d  e  f  g  h i  j

До сих пор я использовал

cut -f9-10 file2.txt  | paste file1.txt - > file3.txt

который выводит именно то, что я хочу

1  2  3  4  5  6  7  8  9  10  i  j
1  2  3  4  5  6  7  8  9  10  i  j
1  2  3  4  5  6  7  8  9  10  i  j

Однако я не хочу создавать новый файл, я бы предпочел изменить файл 1 на указанное выше. я пробовал

cut -f9-10 file2.txt  | paste file1.txt -

но он просто выводит все на экран. Есть ли способ просто добавить столбцы 9 и 10 в конец file1.txt?


person catcha    schedule 19.06.2015    source источник
comment
обратите внимание, что вы упомянули, что в двух файлах одинаковое количество строк, а во втором - еще одно.   -  person fedorqui 'SO stop harming'    schedule 19.06.2015


Ответы (1)


Используйте sponge из moreutils! Это позволяет soak up standard input and write to a file. То есть для замены файла на месте после канала.

cut -f9-10 file2.txt  | paste file1.txt - | sponge file1.txt

Обратите внимание, что вы также можете делать то, что делаете, используя paste с подстановкой процесса.

$ paste -d' ' file1.txt <(awk '{print $(NF-1), $NF}' file2.txt) | sponge file1.txt
$ cat file1.txt
1  2  3  4  5  6  7  8  9  10 i j
1  2  3  4  5  6  7  8  9  10 i j
1  2  3  4  5  6  7  8  9  10 i j

Это объединяет file1.txt с двумя последними столбцами из file2.txt с использованием ' ' в качестве разделителя.

person fedorqui 'SO stop harming'    schedule 19.06.2015
comment
Это гораздо лучшее решение, чем то, что я опубликовал, поэтому я удалил свое и проголосовал за него. - person Mike Atkins; 19.06.2015
comment
Спасибо, @MikeAtkins :) Я провел небольшое исследование и узнал об этой sponge штуке. Похоже на инструмент! - person fedorqui 'SO stop harming'; 19.06.2015