(질문) "1->001, 2->002 로 변환"하는 쉘 스크립트
글쓴이: ytt123 / 작성시간: 월, 2013/02/18 - 11:38오전
쉘 스크립트 질문입니다.
제가 아는 방법은 노가다 밖에 없어서 좀 스마트한 해법을 부탁드립니다.
a001.dat, a002.dat, ... a099.dat, a365.dat 을 받아와야 합니다.
아래처럼 하면, a1.dat, a2.dat, 이렇게 인식을 하네요.
set day=1
while ( ${day} <= 365 )
wget ftp:/xxxxx/a${day}.dat
@ day ++
end
1->001, 2->002 로 변환하려고 하면 어떻게 해야하나요?
감사합니다.
Forums:
seq -w 365
for day in `seq -w 365` ; do wget ftp://hostname/a${day}.dat ; done
아..답변 감사합니다.
아..답변 감사합니다. 그런데 사실은 제가 하려는 작업이 정확히 말씀드리면..
a001.a008.dat, a009.a016.dat, a017.a024.dat, ... a361.a365.dat
(즉 처음엔 7의 배수로, 맨 마지막은 365일에 맞추어...)
이러한 자료를 받는 것입니다.
제가 질문을 너무 단순화해서 올린 바람에, 답변주신 아주 깔끔한 표현식을 제가 응용을 못하겠습니다. ^^;;
제가 전문가님과 수준이 영 안 맞았군요 ㅜㅜ
추가 도움을 부탁드립니다.
음 ..
아래 명령을 입력해 보세요.
$ seq -w 1 7 365
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
seq paste 무식한 방법
프로그래밍을 몰라도 할 수 있는 무식한 방법이 있습니다. seq와 paste를 쓰시면 됩니다.
마지막 줄을 361탭365로 만들어줍니다.
그 다음은
그 다음은 목록을 가지고 실행하시면 되겠죠.
7의 배수가 맞나요? 8의 배수+1처럼
7의 배수가 맞나요? 8의 배수+1처럼 보여서요.
이걸 바라시는 게 맞으세요?
^^ 네, 맞습니다.
8의 배수이네. 감사합니다. 시도 해보겠습니다.
ㅎㅎ 가장 직관적인 방법 같아요.
사실 더 좋은 건 bash를 쓰셔서 덧셈도 한 줄에
사실 더 좋은 건 bash를 쓰셔서 덧셈도 한 줄에 해결하는 것이겠죠.
for day in `seq 1 8 365`; do wget ftp://hostname/a${day}.a"여기다 day+8을".dat ; done
따옴표 안의 식은 http://www.bashguru.com/2010/12/math-in-shell-scripts.html 요걸 참조하시면 될 듯하고요.
저는 지금 bash가 없어서(?!) paste로 급조해보았습니다. 아닌가? 저렇게 하면 세 자리수로 못 만들려나요?
네..제가 찾는 방법이예요..
참고글 읽어보고 시도해 볼게요..^^
아, 저렇게 하면 세자리수 안나와요 ㅠㅠ
for day in `seq -w 1 8 365` ; do day2=$((day+7)) ; wget ftp:(hostmane)/a${day}.a${day2}.dat ; done
하면, a001.a8.dat 이렇게 나와요. (a001.a008.dat 이렇게 나와야 하는데요.)
음 ..
eval 은 없어도 되는거였네요. 역시 printf 로..
(테스트 결과는 링크 때문인지 원문과 다르게 지저분하게 나와서 삭제함)
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
감사합니다!
잘 됩니다 ㅎㅎ
많이 배웠어요.
음 ..
중간에 $(echo ..) 부분은 echo 빼고.. 그냥 wget `printf "ftp://xxxxx/a%03d.a%03d.dat" $day $eday`; 로 쓰시면 됩니다.
(도대체 정신이 어디 갔다 온건지..;; 왜 글케 썼는지 몰겠음..;;)
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
근데..
echo 넣고 그냥 똑같이 카피해서 했는데...잘 되어요..ㅎㅎ
음 ..
안 되어서가 아니라.. 그냥 보는 사람만 헷갈리게 하는 무의미한 코드라서요.. ;;
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
...
..
음 ..
printf 를 쓰면 될 것 같네요.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
man seq
man seq
댓글 달기