텍스트 파일의 비교를 기반으로 파일 읽기, 비교 및 ​​바꾸기

텍스트 파일의 비교를 기반으로 파일 읽기, 비교 및 ​​바꾸기

안녕하세요. 파일 처리 코드 작성에 대한 지침이 필요합니다.

~가 구분 기호이고 각 줄이 키워드이며 첫 번째 열인 파일이 있습니다.

  1. 먼저 ^6999와 일치하는 행을 찾아야 합니다.
  2. 그런 다음 구분 기호 ~를 사용하여 계산되는 $23 필드로 이동하여 값 0과 비교합니다.
  3. 비교가 참이면 $24 필드를 G로 바꿉니다.
  4. 이는 동일한 파일에 기록됩니다.

awk를 사용해 보았지만 대용량 파일에 가장 적합한 방식으로 Python 또는 awk로 콘텐츠를 작성하는 옵션이 표시되지 않습니다.

cat sampletext.dat |grep "^6999"|awk 'BEGIN{FS=OFS="~"}$23 -gt "0"{$24="G"}1' file.txt

6999~486854~30000000~500000000 ~0~~40844506~0~~0~3830~0~0~ EVELYN          ~242741644~Worldconference~Conference No.~20190104~20190104~7~11108~63.650000~63.65~0~0~~5~2~1~Seconds~11108~11160
~0~0.00~

답변1

그럴 필요는 없습니다 grep. 다음을 사용하여 행을 필터링할 수 있습니다 awk.

예제를 제공하지 않았기 때문에 테스트할 수는 없지만 다음과 같이 작동할 것입니다.

awk -F'~' '$1==6999 && $23>0 {$24="G"} {OFS=FS; print}' file.txt

동일한 파일에 쓰려면:

의 경우 GNU awk다음 옵션을 추가하면 됩니다.

gawk -i inplace ...

그렇지 않으면 임시 파일이 필요합니다.

awk ... > file.txt.tmp && mv file.txt.tmp file.txt

관련 정보