Google AdSense (text)

hidden logo stop

Moving

거지 같은 이글루스 광고노출 정책이 싫어서,
새 보금자리(http://blog.leocat.kr/)로 이사감.

[Groovy] stdin 읽기 Computer & Program

Groovy로 stdin(System.in)을 읽어들이고 싶다. 간단히 이런 예제를 생각할 수 있다. 파일을 읽어서 파이프로 넘겨주면 그걸 출력한다거나, 키보드로 입력 받으면 그걸 출력한다거나.. 물론 Java 스타일로 input stream을 읽어들여도 되지만, 뭔가 groovy스러운(?) 것이 있지 않을까 싶어서 찾아봤다. (역시 groovy로 읽으려면 eachLine() 이지 ㅋ)

발견한 코드는 간단하다. 파일에서 읽는 것과 마찬가지로 System.in의 InputStream을 그대로 사용하면 된다. (어차피 stream을 eachLine()으로 읽을건데.. 검색까지 해보고 깨닫다니 너무 어렵게 생각했었나보다.)

System.in.eachLine() { line, i ->
    println "line #${i}: ${line}"
}


위의 내용을 test.groovy 라는 파일명으로 저장하고 실행해 보자. 리눅스 파이프로 파일을 입력받아서 출력하는 예제

$ head user.csv.7days
pcid,g,a,sw,sh,vw,vh
'134314481460956239',,0,1024,768,1003,519
'134314481460956239',,0,1024,768,1003,519
'100981411489060144',F,33,1024,768,1003,569
'135493205528132467',,0,1280,800,1259,584
'135061422701577644',,0,1440,900,1419,729
'135061422701577644',,0,1440,900,1419,729
'135061422701577644',F,29,1440,900,1419,729
'135061422701577644',F,29,1440,900,1419,729
'104260088304633216',,0,1366,768,1345,596

$ head user.csv.7days | groovy test.groovy
line #1: pcid,g,a,sw,sh,vw,vh
line #2: '134314481460956239',,0,1024,768,1003,519
line #3: '134314481460956239',,0,1024,768,1003,519
line #4: '100981411489060144',F,33,1024,768,1003,569
line #5: '135493205528132467',,0,1280,800,1259,584
line #6: '135061422701577644',,0,1440,900,1419,729
line #7: '135061422701577644',,0,1440,900,1419,729
line #8: '135061422701577644',F,29,1440,900,1419,729
line #9: '135061422701577644',F,29,1440,900,1419,729
line #10: '104260088304633216',,0,1366,768,1345,596



그리고 키보드 입력을 통해서 console로 받은 입력을 처리할 수도 있다. (굵은 글씨는 타이핑)

groovy test.groovy
this
line #1: this
is
line #2: is
test. testing..
line #3: test. testing..



- 참고
Read from stdin : Groovy Almanac

덧글

댓글 입력 영역

Google AdSense (text/image)