bash shell 질문입니다..
글쓴이: seren0924 / 작성시간: 화, 2014/01/21 - 8:12오후
쉘 프로그래밍은 거의 초보라 잘 모르겠어서요..
iwlist wlan0 scan | grep -w "ESSID\|Quality" | tac | sed '$!N;s/\n/\t/' 이렇게 하면
ESSID:"linksys" Quality=49/70 Signal level=-61 dBm
ESSID:"" Quality=56/70 Signal level=-54 dBm
ESSID:"dlink_test" Quality=50/70 Signal level=-60 dBm
ESSID:"NETGEAR00" Quality=53/70 Signal level=-57 dBm
이런식으로 출력이 되는데요... 여기서 제가 필요한건 Quality를 빼고 Signal Level만 필요해서요...
그렇게는 어떻게해야할까요?
Forums:
Signal level 뒤에 아무것도 안 온다는 전제
Signal level 뒤에 아무것도 안 온다는 전제 하에서,
iwlist wlan0 scan | grep -w "ESSID\|Quality" | tac | sed '$!N;s/\n/\t/' | awk -F"Signal level=" '{print $2}'
awk -F는 문자열을 토큰링하는 조건을 바꿔주는겁니다.
"Signal level=" 을 기준으로 토큰링 하기 때문에 print $1은 ESSID:"linksys" Quality=49/70 라는 문자열이 될테고
$2는 Signal level= 문자열 뒤에있는 모든 문자열이 되겠지요..
Signal level 뒤에 뭔가 다른 문자열이 붙는 경우가 있다면 다른 방법을 생각해보셔야 할듯 싶네요
음 ..
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
남겨주신대로 해보아도 잘 안되네요ㅠ 제가 무선랜을
남겨주신대로 해보아도 잘 안되네요ㅠ 제가 무선랜을 바꿨더니 signal level이 Signal level=68/100 이런식으로 나와서 sed 부분을 변경해봐도 잘 안되네요...
그리고.. 저렇게 한줄씩 띄어져서 나오는게아니고 모든 줄이 붙어져서 나오는데.. 그건 어떻게 해야하나요?
음 ..
그쪽에서 과연 어떤 명령을 쳤길래 모든 줄이 붙어져서 나왔는지부터 맞춰야 되는 상황이군요. -.-;;
중간 중간 출력 결과가 서로 다를 수도 있으니..
명령을 단계별로 끊어서 결과를 확인해 보시고, 그에 따라 적절히 바꾸세요.
sed 의 substitution 에서 \( \) 와 같이 괄호로 감싼 패턴은, \1 \2 와 같이 변수로 받을 수 있습니다.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
적어주신것 그대로 복사해서 썼습니다..ㅜㅜ sh파일로
적어주신것 그대로 복사해서 썼습니다..ㅜㅜ
sh파일로 만들어서..
#!/bin/bash
TEST=$(iwlist wlan0 scanning | grep -E 'ESSID:|Quality=' | sed 'N;s/\n/ /' | sed 's/.*level=\(.*\) dBm.*\(ESSID:.*\)$/\2 Signal level=\1 dBm/g')
echo $TEST
이렇게 뿌렸습니다. 그랬더니 예를들면
ESSID:"ollehWiFi " Quality=47/70 Signal level=-63 dBm ESSID:"ollehWiFi2" Quality=42/70 Signal level=-57 dBm
이런식으로 출력되었습니다. 제가 전체를 변수 하나로받아서 그런건가요? ㅜㅜ
음 ..
http://www.tldp.org/LDP/abs/html/quoting.html
http://www.tldp.org/LDP/abs/html/varassignment.html
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
댓글 달기