повторить дважды каждую пару строк в цикле

повторить дважды каждую пару строк в цикле

Мне нужно передать в pdftk список аргументов, состоящий из строк, повторенных дважды, например:

A1-2 B1-2 A3-4 B3-4 A5-6 B5-6...и так далее...

Мне удалось добиться этого с помощью этого обходного пути

for ((x=1, y=2;x>=18, y<=18;x++, y++)); do echo "A$x-$y B$x-$y "; done| awk 'NR %2==1 {print $1, $2} ' | tr '\n' ' '

что дает:

А1-2 В1-2 А3-4 В3-4 А5-6 В5-6 А7-8 В7-8 А9-10 В9-10 А11-12 В11-12 А13-14 В13-14 А15-16 В15-16 А17-18 В17-18

но я неудовлетворен и ищу более правильный, более элегантный и лучший способ выполнить эту задачу

решение1

for ((x=1; x<=18; x+=2)); do echo -n "A$x-$((x+1)) B$x-$((x+1)) "; done

решение2

или даже чистый awk:

awk 'BEGIN {for (i=1; i<19; i+=2) printf "A"i"-"i+1 " B"i"-"i+1" "}'

решение3

С помощью только bash:

pdftk input.pdf cat $(for ((x=1; x<18; x+=2)); do echo {A,B}$x-$((x+1)); done) output output.pdf

С помощью утилит GNU (Linux или Cygwin):

pdftk input.pdf cat $(seq 1 2 17 | awk '{$1 = $1 "-" ($1+1); print "A" $1; print "B" $1}') output output.pdf

С Perl:

pdftk input.pdf cat $(perl -e 'print map {"A$_ B$_ "} map {(2*$_-1) . "-" . (2*$_)} (1..9)') output output.pdf

Связанный контент