탭으로 구분된 파일이 있습니다. 사용자가 열 번호와 번호를 지정할 수 있도록 AWK를 사용하여 파일을 필터링하려고 합니다. 그러면 스크립트는 지정된 열의 값이 해당 번호보다 큰 파일(및 헤더)의 행만 반환합니다. . 예를 들어 열 3과 임계값 0.28을 원할 경우 다음 파일을 사용하고 싶습니다.
Col1 Col2 Col3 Col4 Col5
... ... 0.12 ... ...
... ... 0.323 ... ...
... ... 0.4123 ... ...
... ... 0.002 ... ...
... ... 0.896 ... ...
그리고 얻다
Col1 Col2 Col3 Col4 Col5
... ... 0.323 ... ...
... ... 0.4123 ... ...
... ... 0.896 ... ...
나는 다음 스크립트를 시도했습니다
#!/bin/bash
#For testing
echo $1
echo $2
echo $3
awk -v col="$1" -v val="$2" '$col > $val' filename
을 실행하려고 하면 bash script.sh 3 0.28 filename
파일의 어떤 줄도 인쇄되지 않습니다. echo 명령 때문에 3, 0.28, 파일 이름만 출력됩니다.
그러나 표시되도록 스크립트를 변경하면
awk -v col="$1" -v val="$2" '$col > 0.28' filename
예상되는 필터링 동작을 얻습니다. $val
숫자로 해석되지 않을 수도 있겠다는 생각 에 시도해 봤습니다.
awk -v col="$1" -v val="$2" '$col > ($val + 0)' filename
이로 인해 파일의 모든 줄이 인쇄되어 TRUE로 평가된다고 생각됩니다. 저는 AWK를 처음 접했기 때문에 여기서부터 어디서부터 시작해야 할지 모르겠습니다.