Подвыражение в ed для множественных замен

Ваша awk-команда в основном верна -она будет работать, если вы удалите посторонние перенаправления и поменяете порядок файлов:

$ awk 'FNR==NR {data[FNR]=$0; next} (FNR%2==1){$0=data[FNR]}1' File2 File1
>name.A
GGG  
>name.B
AAA  
>name.C
TTT  
>name.D
CCC  
>name.E
CAT 

В качестве альтернативы, с GNU sed и оболочкой, поддерживающей подстановку процессов:

$ sed -e '2~2{R /dev/stdin' -e 'd}' File2 < <(sed '1~2d' File1)
>name.A
GGG  
>name.B
AAA  
>name.C
TTT  
>name.D
CCC  
>name.E
CAT 

Пояснение:

  • sed '1~2d' File1удалить нечетные строки из файла 1

  • < <(...)передать результаты через стандартный ввод

  • sed -e '2~2{R /dev/stdin' -e 'd}' File2считывать по одной строке со стандартного ввода и ставить ее в очередь для вставки после следующей четной строки File2; затем удалите четную строку

1
30.07.2021, 20:07
0 ответов

Теги

Похожие вопросы