파일의 필드에 숫자 추가

파일의 필드에 숫자 추가

다음과 같은 데이터가 포함된 파일이 있습니다.

Archie McNichol:(206) 548-1348:250:100:175

마지막 175에 100을 더하고 싶으므로 다음과 같이 인쇄됩니다.

Archie McNichol:(206) 548-1348:250:100:275

이것은 실제로 내가 가지고 있는 것입니다:

#!/bin/bash
while IFS=: read -r -a LINE
do
    added=${LINE[3]} | 100
    echo "${LINE[0]}" $added+100

done < "$1"

답변1

Jason Urian은 다음과 같이 말했습니다.

$ awk -F: '{$NF += 100}1' file

아니면 뻔한 누락( OFS)을 수정하고 저처럼 작성하시면,

$ awk -v FS=':' -v OFS=':' '{ $NF += 100 } { print }' file >file.new

또는,

$ awk -v FS=':' -v OFS=':' '{ $NF += 100; print }' file >file.new

그러면 . file라는 이름의 새 파일을 읽고 생성합니다 file.new.

이 짧은 awk스크립트는 각 행을 - file:구분된 필드로 구성된 것으로 처리합니다. 를 사용하면 $NF각 행의 마지막 필드에 액세스할 수 있으며 $NF += 100해당 값이 무엇이든 100을 더할 수 있습니다.

print수정된 행이 출력 됩니다 ( 1주석은 참값이며 awk현재 행을 인쇄하는 기본 동작을 프롬프트합니다).

명령줄 옵션은 -v FS=':' -v OFS=':'입력 및 출력 필드 구분 기호를 로 설정합니다 :.

한 줄의 입력으로 테스트해 보세요.

$ echo 'Archie McNichol:(206) 548-1348:250:100:175' | awk -v FS=':' -v OFS=':' '{ $NF += 100 } { print }'
Archie McNichol:(206) 548-1348:250:100:275

관련 정보