for 사이클에서 각 문자열 두 쌍을 두 번 반복합니다.

for 사이클에서 각 문자열 두 쌍을 두 번 반복합니다.

다음과 같이 두 번 반복되는 문자열로 구성된 인수 목록인 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' ' '

그것은 다음을 제공합니다:

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- 18B17-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

펄의 경우:

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

관련 정보