Unix에서 파일 n의 쉼표로 구분된 특수 값을 사용하여 레코드를 삭제하는 방법

Unix에서 파일 n의 쉼표로 구분된 특수 값을 사용하여 레코드를 삭제하는 방법

Unix에서 파일 n의 쉼표로 구분된 특수 값을 사용하여 레코드를 삭제하는 방법

내 데이터

100,india,*,*,P,45000,location
200,india,*,*,*,45000,location
300,india,*,*,P,45000,location
400,india,*,*,*,45000,location

P가 5번째 위치에 관계없이 이 기록을 삭제하고 싶습니다. 원하는 출력

200,india,*,*,*,45000,location
400,india,*,*,*,45000,location

답변1

다음과 같이 시도해 보세요.

awk -F, '{if ($5 != "P") { print $0 }}' /path/to/input-file

답변2

/linux 태그를 사용하므로 GNU가 있어야 합니다 sed.

sed -i -E '/^([^,]*,){4}P/d' data.txt
  • -i그 자리에서 파일 편집
  • -E가독성을 높이기 위해 확장 정규식을 사용하세요.
  • [^,]*쉼표 없이 시퀀스와 일치하므로
  • ^([^,]*,){4}처음 4개 필드 일치
  • 뒤에 a가 오면 해당 줄을 삭제하십시오 P.d

관련 정보