8 번째 필드 (열)에서 값이 2 이하인 모든 줄을 제거해야합니다.
내 데이터는 다음과 같습니다
12-31 Airport 189 379 41 49.70946503 -124.91377258 2 2880 30.8
01-01 AlberniElementary 165 331 16 49.26100922 -124.80662537 4 5760 26.1
01-09 BamfieldMarine 161 323 23 48.83490372 -125.13572693 2 2875 27.4
01-10 BamfieldMarine 161 323 23 48.83490372 -125.13572693 3 3068 38.6
awk를 사용하여 원하는 값을 제거하고 다른 파일로 인쇄 할 수 있으며 sed가 현재 파일을 편집한다는 것을 이해합니다. 두 경우 모두 원본 파일을 유지해야합니다.
참고 : 솔루션에 대한 자세한 설명을 제공하십시오. 명령을 작성하는 것만으로는 충분하지 않으므로 제안 사항에 주석을 달아주십시오.
추가 참고 사항 : 데이터에는 헤더 행이 있으므로 대부분의 솔루션은
awk ‘FNR> 1’
나는 생각합니까?
답변
당신은 거의 그것을 얻었다.
awk '(NR>1) && ($8 > 2 ) ' foo > bar
어디
NR
레코드 수 (행 수)$8
여덟 필드입니다&&
논리적이고foo
변경되지 않은 원본 파일입니다.bar
결과 파일- 암시 적 기본 동작은 현재 입력 라인을 인쇄하는 것입니다
헤더는 foo에서 bar로 스트라이프되어 유지됩니다.
awk '(NR==1) || ($8 > 2 ) ' foo > bar
어디
||
논리적이거나- NR == 1 또는 $ 8> 2 인 경우 입력 라인이 인쇄됩니다.
업데이트 # 1
범위를 지정하려면
( ($8 >= -4) && ( $8 <= 4 ) )
-4에서 4까지 8 번째 필드(NR == 1 ) || ( ($8 >= -4) && ( $8 <= 4 ) )
헤더를 포함하여 동일