AWK를 사용하여 두 번째 열 가져 오기


9

두 번째 데이터 열을 얻기 위해 awk 명령을 얻을 수없는 것 같습니다.

배쉬 코드 :

filter_data=$(awk "{if(/$filter:/) print $2}" < scanresults_temp.txt)

printf  "$filter_data \n"

$ filter 변수는 셸 스크립트로 전달되는 Download 또는 Upload 값입니다. 따라서 awk는 다운로드 또는 업로드라는 용어를 사용하여 적절한 행을 검색합니다.

파일 내용은 다음과 같습니다.

Testing download speed................................................................................
Download: 51.13 Mbit/s
Testing upload speed................................................................................................
Upload: 57.38 Mbit/s

난 그냥 숫자가 아닌 다른 것, 예를 얻기 위해 노력하고 51.1357.38.


2
바로 인쇄하는 경우 왜 변수에 저장합니까? 그냥 사용 awkprintf
세르지 Kolodyazhnyy

답변:


13

awk 프로그램 본문에 작은 따옴표를 사용해야하므로 awk의 변수는 쉘에 의해 확장되지 않습니다. 쉘 변수를 awk에 전달하는 방법은 다음과 같습니다.

filter_data=$( awk -v re="$filter:" '$0 ~ re {print $2}' scanresults_temp.txt )

7

다른 방법은 쉘이 변수 awk할당을 통해 환경 에 변수를 넣는 것입니다 (임시).

re=$filter  awk  '$0 ~ ENVIRON["re"] {print $2}'  input.txt

쉘에서 할당을 수행 할 때 변수 인용은 필요하지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.