안녕하세요. 파일 처리 코드 작성에 대한 지침이 필요합니다.
~가 구분 기호이고 각 줄이 키워드이며 첫 번째 열인 파일이 있습니다.
- 먼저 ^6999와 일치하는 행을 찾아야 합니다.
- 그런 다음 구분 기호 ~를 사용하여 계산되는 $23 필드로 이동하여 값 0과 비교합니다.
- 비교가 참이면 $24 필드를 G로 바꿉니다.
- 이는 동일한 파일에 기록됩니다.
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