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'
제 생각에는?
답변1
당신은 거의 그것을 이해합니다.
awk '(NR>1) && ($8 > 2 ) ' foo > bar
어디
NR
레코드 수(즉, 행 수)입니다.$8
8개 필드입니다&&
논리적이고foo
변경되지 않은 원본 파일입니다.bar
결과 파일- 암시적 기본 동작은 현재 입력 줄을 인쇄하는 것입니다.
헤더는 보존하기 위해 foo에서 bar로 스트라이프됩니다.
awk '(NR==1) || ($8 > 2 ) ' foo > bar
어디
||
논리적이거나- NR==1 또는 $8 > 2이면 입력 줄을 인쇄합니다.
업데이트 #1
범위 지정
( ($8 >= -4) && ( $8 <= 4 ) )
8번째 필드는 -4부터 4까지입니다.(NR == 1 ) || ( ($8 >= -4) && ( $8 <= 4 ) )
제목 포함 동일