실행할 때 iw help
경고가 표시됩니다.
마십시오 하지 이 도구를 screenscrape, 우리는 그 출력 안정성을 고려하지 않습니다.
아래 에는 두 가지 섹션이 있습니다. 먼저 문제를 피하기위한 해결책 iw
과 질문에 대한 답변입니다. 둘 다 전통적인 awk
것과 함께 작동 합니다 (기본값) GNU Awk
.
문제에 대한 해결책
iwconfig
대신에 사용 합니다 iw
:
while sleep 1; do
iwconfig wlan0 | awk -F'[ :=]+' '/Freq/{gsub("\\.","");f=$5}/Signal/{s=$7}END{print s","f}'
done >>log.csv
산출
$ iwconfig wlan0 | awk -F'[ :=]+' '/Freq/{gsub("\\.","");f=$5}/Signal/{s=$7}END{print s","f}'
-44,2412
노트
값을 ,
탭으로 구분할지 또는 탭으로 구분 할지를 혼란스럽게 \t
생각했습니다 ,
. 여기서는 공백없이 선택했습니다 . 그 방금 변경 원하는 것을 아니라면 s","f
따라서 s
는 IS Signal
와 가치가있다.
또한 리디렉션을 이동하여 각 실행에서 파일을 한 번만 열 필요는 없습니다.f
Frequency
awk
부품 설명
-F'[ :=]+'
– +
대괄호로 묶인 세 문자 중 하나 이상 ( )으로 다른 필드 구분 기호를 설정합니다.
/Freq/{gsub("\\.","");f=$5}
–“Freq”가있는 줄에서 모든 점을 아무것도 바꾸지 말고 ( iwconfig
출력 의 주파수 가 점을 천 단위 구분 기호로 사용 하기 때문에 ) 다섯 번째 열의 내용을 변수에 저장하십시오f
/Signal/{s=$7}
–“Signal”이있는 행에서 일곱 번째 열의 내용을 변수에 저장하십시오. s
END{print s","f}
– 입력을 처리 한 후 print
변수 s
와 변수 f
사이에 리터럴 쉼표가 있습니다.
질문에 대한 답변
while sleep 1; do
iw dev wlan0 link | awk '/freq/{f=$2};/signal/{s=$2}END{print s","f}'
done >>log.csv
산출
$ iw dev wlan0 link | awk '/freq/{f=$2};/signal/{s=$2}END{print s","f}'
-43,2412
awk
부품 설명
/freq/{f=$2}
–로 표시된 행 freq
에서 두 번째 열 (공백으로 구분)을 변수에 저장하십시오.f
/signal/{s=$2}
–로 표시된 행 signal
에서 두 번째 열을 변수에 저장하십시오.s
END{print s","f}
– 입력을 처리 한 후 print
변수 s
와 변수 f
사이에 리터럴 쉼표가 있습니다.