(질문) "1->001, 2->002 로 변환"하는 쉘 스크립트

ytt123의 이미지

쉘 스크립트 질문입니다.
제가 아는 방법은 노가다 밖에 없어서 좀 스마트한 해법을 부탁드립니다.

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 로 변환하려고 하면 어떻게 해야하나요?

감사합니다.

Prentice의 이미지

for day in `seq -w 365` ; do wget ftp://hostname/a${day}.dat ; done

ytt123의 이미지

아..답변 감사합니다. 그런데 사실은 제가 하려는 작업이 정확히 말씀드리면..

a001.a008.dat, a009.a016.dat, a017.a024.dat, ... a361.a365.dat
(즉 처음엔 7의 배수로, 맨 마지막은 365일에 맞추어...)

이러한 자료를 받는 것입니다.

제가 질문을 너무 단순화해서 올린 바람에, 답변주신 아주 깔끔한 표현식을 제가 응용을 못하겠습니다. ^^;;
제가 전문가님과 수준이 영 안 맞았군요 ㅜㅜ

추가 도움을 부탁드립니다.

ymir의 이미지

아래 명령을 입력해 보세요.

$ seq -w 1 7 365

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

Prentice의 이미지

프로그래밍을 몰라도 할 수 있는 무식한 방법이 있습니다. seq와 paste를 쓰시면 됩니다.

seq -w 1 8 365 > front.txt
seq -w 8 8 365 > back.txt
paste front.txt back.txt > joined.txt
gvim joined.txt

마지막 줄을 361탭365로 만들어줍니다.

그 다음은

:%s/\t/.a/g
:%s#^#ftp://hostname/a#g
:%s/$/.dat
:wq

그 다음은 목록을 가지고 실행하시면 되겠죠.

wget -i joined.txt
Prentice의 이미지

7의 배수가 맞나요? 8의 배수+1처럼 보여서요.

wget ftp://hostname/a001.a008.dat
wget ftp://hostname/a009.a016.dat
...
wget ftp://hostname/a353.a360.dat
wget ftp://hostname/a361.a365.dat

이걸 바라시는 게 맞으세요?

ytt123의 이미지

8의 배수이네. 감사합니다. 시도 해보겠습니다.

ㅎㅎ 가장 직관적인 방법 같아요.

Prentice의 이미지

사실 더 좋은 건 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로 급조해보았습니다. 아닌가? 저렇게 하면 세 자리수로 못 만들려나요?

ytt123의 이미지

참고글 읽어보고 시도해 볼게요..^^
아, 저렇게 하면 세자리수 안나와요 ㅠㅠ

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 이렇게 나와야 하는데요.)

ymir의 이미지

eval 은 없어도 되는거였네요. 역시 printf 로..

$ day=1 && while [ $day -lt 365 ] ; do let eday=day+7; [ $eday -gt 365 ] && eday=365; $(echo wget `printf "ftp://xxxxx/a%03d.a%03d.dat" $day $eday`); let day+=8; done

(테스트 결과는 링크 때문인지 원문과 다르게 지저분하게 나와서 삭제함)

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

ytt123의 이미지

잘 됩니다 ㅎㅎ

많이 배웠어요.

ymir의 이미지

중간에 $(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 』

ytt123의 이미지

echo 넣고 그냥 똑같이 카피해서 했는데...잘 되어요..ㅎㅎ

ymir의 이미지

안 되어서가 아니라.. 그냥 보는 사람만 헷갈리게 하는 무의미한 코드라서요.. ;;

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

ytt123의 이미지

..

ymir의 이미지

printf 를 쓰면 될 것 같네요.

$ day=0 && while [ $day -le 365 ] ; do eval $(echo wget `printf "ftp:/xxxxx/a%03d.dat" $day`); let day+=7; done
 
...

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

익명 사용자의 이미지

man seq

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.