쉘스크립트로 문자열 처리하는 것 질문 있습니다.
1,0001001,101,101,0,2,INT16,1,1,1530
2,0001001,101,102,2,2,INT16,1,1,1530
3,0001001,101,103,4,2,INT16,1,1,1530
1,0001001,3356,101,0,2,INT16,1,1,9999
2,0001001,3356,102,2,2,INT16,1,1,9999
3,0001001,3356,103,4,2,INT16,1,1,9999
1,0001002,102,101,0,2,INT16,1,1,1530
2,0001002,102,102,2,2,INT16,1,1,1530
3,0001002,102,103,4,2,INT16,1,1,1530
1,0001002,3356,101,0,2,INT16,1,1,9999
2,0001002,3356,102,2,2,INT16,1,1,9999
3,0001002,3356,103,4,2,INT16,1,1,9999
다음과같은 txt파일이 있습니다.
여기서 고정값은 1530 이구요
1530 기준으로
var1=$( awk '/1530/' test.txt) 이렇게 짤라서 echo로 출력하면
1,0001001,101,101,0,2,INT16,1,1,1530
2,0001001,101,102,2,2,INT16,1,1,1530
3,0001001,101,103,4,2,INT16,1,1,1530
1,0001002,102,101,0,2,INT16,1,1,1530
2,0001002,102,102,2,2,INT16,1,1,1530
3,0001002,102,103,4,2,INT16,1,1,1530
이렇게 나옵니다. 그리고
var2=$( echo $var | cut -d ',' -f2 ) 이렇게 해서 출력하면
0001001
0001001
0001001
0001002
0001002
0001002 이렇게 결과가 나올줄 알았는데
0001001 딸랑 이렇게만 출력이 되더라구여 ....
파일에서 특정 부분을 변수에 담아서 그중에서 일부분을 다시 변수에 담고
나중에 sed 나 vi -c "%s" 를 통해 특정부분만 변경하려고 합니다.
ㅇㅖ를들어 ./test.sh 2 3 이렇게 해서
test.txt 에서 1530 이 포함된 행에서
0001002,102 => 0001002,103 이렇게 다 바꾸려고 합니다.
일단 cut 했을때 저렇게 나오는 이유가 뭔지 알고싶습니다..
음 ..
변수에 tab 이나 newline 이 들어 있는 경우, echo $var1 과 같이 변수를 따옴표 없이 쓰면 모두 space 로 바뀌어 출력됩니다.
echo "$var1" 과 같이 따옴표를 씌워 주어야, whitespace 가 그대로 보존되어 출력됩니다.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
댓글 달기