bash script 내에서 컬럼 문자열 치환하여, 찍는 것 관련 조언을 구합니다.
log에는 아래와 같이 내용이 있습니다.
* test.log
556 -16 81076K 47999K 46120K system_server
556 -16 81076K 47999K 46120K system_server
556 -16 81076K 47999K 46120K system_server
556 -16 81076K 47999K 46120K system_server
556 -16 81076K 47999K 46120K system_server
여기서 4번째 컬럼 내용에서 K를 제거해서
47999
47999
47999
47999
47999
로 찍고 싶은데,
(아시다시피 엑셀 csv로 만들려고 합니다. ^^;)
cat test.log | while read line
do
echo $line > tmp_line.log
PROC_SIZE=$(awk '{ printf "%s", $4 }' tmp_line.log)
echo $PROC_SIZE >> $RESULT_FILE
done
rm tmp_line.log
excel $RESULT_FILE
여기서 문의사항은,
일단 tmp_line.log 만들어서 awk에 입력파일로 줘야 하는것이 맘에 안 들고,
$PROC_SIZE에서 "47999K"에서 K를 아직 제거 못 했습니다.
간단히 좋은 아이디어 있으시면 공유 부탁드립니다.
루프도 필요없이 아래와 같이 하면 될
루프도 필요없이 아래와 같이 하면 될 듯요..
컬럼사이에는 공백이 있다고 가정(not tab)
K는 반드시 있다고 가정 (무조건 마지막 1byte를 떼버림)
cut -f4 -d' ' test.log | sed
cut -f4 -d' ' test.log | sed 's/[^0-9]$//g' > $result_file
shell script 내에서 사용할 건데, rediection이 먹히는지요?
두분 다 한줄로... 감솨합니다.
shell script 내에서 사용할 건데, rediection이 먹히는지요?
#!/bin/sh
cut -f4 -d' ' test.log | sed 's/[^0-9]$//g' > $result_file
쉘스크립트 안에서 리다이렉션 되고요, 위 같은
쉘스크립트 안에서 리다이렉션 되고요,
위 같은 경우라면 스크립트 결과를 리다이렉션으로 받는게 더 보기 좋을것 같은데요.
한가지 더 문의드립니다.
입력창에서
xxx.sh /aaa/bbb
요렇게 입력될 경우,
$1="/aaa/bbb"
가 되는데요,
이 $1이 파일이름에 쓰이는데,
/ 를 _ 로 치환하려고 하는데,
result_file=$1
인 경우, result_file의 문자열을 어떻게 바꿀 수 있을까요?
script 밑바닥부터 하려니 어렵네요....
result_file=${1//\//_} 자세한
자세한 내용은 http://tldp.org/LDP/abs/html/string-manipulation.html 여기 참조하세요
링크 링크에 오류가
링크 링크에 오류가 있는데요.
http://tldp.org/LDP/abs/html/string-manipulation.html 여기 들어가서 보세요.
댓글 달기