[완료]c shell 에서 문자 처리. 문자 따오기. 방법좀
글쓴이: chojg711 / 작성시간: 화, 2007/02/20 - 10:30오전
답글달아주셔서 대단히 감사합니다.
여러분들 덕분에 굉장히 많은것들 배웠습니다. ^^
다음과 같은 경우입니다.
bash shell을 이용해서
AAA=2006060100
middle=${AAA:0:8}
echo $middle
이렇게 해주면 20060601 이라고 middle 에 20060601 이 저장되잖아요..
이것처럼 csh script로 원하는 부분에서부터 문자를 잘라서 변수에 저장할려면 어떻게 해야하나요...
죄송합니다... 부탁드리겠습니다.
Forums:
awk로 처리하시면..
set AAA="2006060100"
set middle=`echo $AAA|awk '{for(i=1;i<=length($0);i++) if(i<=8) O=sprintf("%s%s",O,substr($1,i,1));print O}'`
echo $middle
으라 다안들어가네요..
첨부 참조하세요.
awk에도 substr함수가
awk에도 substr함수가 있습니다.
-_-
set AAA="2006060100"
set middle=`echo $AAA|awk '{print substr($0,1,8)}'`
echo $middle
갑자기 든 생각인데
갑자기 든 생각인데 echo 에 pipe까지 쓰는건 아까운것 같습니다.
set middle=`awk -v a=$AAA 'BEGIN{print substr(a,1,8)}'`
정도..
good
오호라~ 좋고..
한수 배웁니다.
한가지 아쉬운 점...
awk의 -v option은 solaris의 /usr/bin/awk에서는 지원되지 않고,,
/usr/xpg4/bin/awk 혹은 nawk를 써야하네요..
호환성이 조금은 떨어지게 되는군요..
사실은 저도 -v
사실은 저도 -v 옵션보다는
set middle=`awk 'BEGIN{print substr("'$AAA'",1,8)}'`
형태로 많이쓰는데.. 가독성이 좋자 않아서 -v옵션을 쓰는것이 어떨까 생각해봤습니다.
경우에 따라 다음과 같이 쓰기도 합니다.
set middle=`awk 'BEGIN{print substr(\042'$AAA'\042,1,8)}'`
이경우는 solaris에서 어떻게 작동하나요? solaris는 안써봐서 잘 모르겠네요.
추가.. 생각해 보니 일반적이지는 않지만 이경우에는
awk "BEGIN{print substr($AAA,1,5)}"
로 써도 되겠군요
cut 도
cut 도 있음..
----------------------------------------------------------------------------
C Library Development Project
----------------------------------------------------------------------------
댓글 달기