파일에서 줄 삭제

파일에서 줄 삭제

4개의 열과 10000개의 행의 데이터가 있습니다. 두 번째 열의 값이 이전 행의 세 번째 열보다 작은 행을 삭제하려고 합니다.

chr1        10        20        3 
chr1        15        30        9 
chr1        55        60        1

답변1

awk '$2 >= prev; {prev=$3}' file.txt

설명하다

  • awk <commands> file.txt: awk를 실행하세요 file.txt.
  • $2 >= prev: 두 번째 필드가 $2변수의 내용보다 크거나 같은지 확인합니다 prev. (첫 번째 줄은 설정되지 않습니다.) 이것이 true이면 awk는 기본적으로 전체 줄을 인쇄합니다. (즉, 다음보다 작으면 행을 삭제합니다.)
  • {prev=$3}: 세 번째 필드의 내용을 $3변수에 저장합니다 prev.

그런 다음 다음 행에 대해 이를 반복합니다. awk는 두 번째 필드를 prev이전 행의 세 번째 필드를 포함하는 와 비교합니다. 참고할 몇 가지 사항이 있습니다.

  • 첫 번째 행에 무엇을 원하는지 잘 모르겠으므로 필요에 따라 수동으로 포함/제외하겠습니다.
  • 데이터가 실제로 탭으로 구분된 경우 awk에 다음 플래그를 추가하여 이를 알립니다 -F'\t'.

관련 정보