특정 열의 특정 값을 기반으로 파일에서 행을 제외합니다.

특정 열의 특정 값을 기반으로 파일에서 행을 제외합니다.

Linux 서버 CentOS 7에 다음 형식의 많은 항목을 포함하는 텍스트 파일이 있습니다.

1234567890123456, 1, 17, cde, Test Test
1234567890123456, 2, 17, cde, Test Test
1234567890123456, 3, 17, cde, Test Test
1234567890123456, 4, 17, cde, Test Test
1234567890123456, 5, 17, cde, Test Test
1234567890123456, 1, 18, cde, Test Test
1234567890123456, 1, 17, cde, Test Test

제거하려면 어떤 명령을 사용해야 할까요?

1, 17
2, 17
3, 17
4, 17

결과는 다음과 같아야합니다

1234567890123456, 5, 17, cde, Test Test
1234567890123456, 1, 18, cde, Test Test

답변1

접근하다:

awk -F, '!($2<5 && $3==17)' file

출력:

1234567890123456, 5, 17, cde, Test Test
1234567890123456, 1, 18, cde, Test Test

  • -F,- 필드 구분 기호

  • $2, $3- 각각 2번째와 3번째 필드를 나타냅니다.

답변2

정확한 값을 제외하려면 필드 3 제외가 항상 '17'이라는 공통점을 활용하세요.

awk -F, '!($3 == 17 && ($2 == 1 || $2 == 2 || $2 == 3 || $2 == 4))' < input > output

관련 정보