Wiederholen Sie jedes Paar von Zeichenfolgen zweimal in einem Zyklus

Wiederholen Sie jedes Paar von Zeichenfolgen zweimal in einem Zyklus

Ich muss an pdftk eine Liste von Argumenten übergeben, die aus zweimal wiederholten Zeichenfolgen bestehen, wie:

A1-2 B1-2 A3-4 B3-4 A5-6 B5-6...und so weiter...

Dies gelang mir mit diesem Workaround

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' ' '

das gibt:

A1-2 B1-2 A3-4 B3-4 A5-6 B5-6 A7-8 B7-8 A9-10 B9-10 A11-12 B11-12 A13-14 B13-14 A15-16 B15-16 A17-18 B17-18

aber ich bin unzufrieden und suche nach einer geeigneten, eleganteren und besseren Möglichkeit, diese Aufgabe zu erfüllen

Antwort1

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

Antwort2

oder sogar reines awk:

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

Antwort3

Mit nur Bash:

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

Mit GNU-Dienstprogrammen (Linux oder Cygwin):

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

Mit Perl:

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

verwandte Informationen