텍스트 줄에서 값 찾기 및 바꾸기

텍스트 줄에서 값 찾기 및 바꾸기

한 줄의 텍스트만 포함하는 텍스트 파일이 있습니다.

1314:Battery:1.90:50:30

어쨌든 a를 수행 grep하고 sed값 50과 30을 다음과 같이 변경할 수 있는지 알아 내려고 노력 중입니다.

1314:Battery:1.90:45:35

50에서 5를 줄이고 30에서 5를 늘립니다.

이 문제를 해결하는 더 좋은 방법이 있다면 안내해주세요. 방금 이 스크립트를 선택하기 시작했습니다. 감사합니다 =)

답변1

awk -F":" '{OFS=":"; print $1,$2,$3,$4-5,$5+5}' filename

산출:

1314:배터리:1.90:45:35

답변2

와 함께 perl:

perl -i -F: -lape '$F[3]-=5;$F[4]+=5;$_=join ":",@F' the-file

( sh해당 숫자는 항상 앞에 0이 없는 십진 정수라고 가정):

IFS=: read -r a b c d e < the-file &&
  printf '%s\n' "$a:$b:$c:$((d-5)):$((e+5))" > the-file

최신 버전의 GNU 사용 awk:

gawk -i /usr/share/awk/inplace.awk -F: -vOFS=: '{$4-=5;$5+=5}1' the-file

사용하지 마세요-i inplaceas 는 누군가 악성 코드를 심었을 수 있는 현재 작업 디렉터리에서 확장명(as 또는 )을 먼저 gawk로드하려고 시도합니다 . 와 함께 제공되는 확장 프로그램 의 경로는 시스템에 따라 다를 수 있습니다.inplaceinplaceinplace.awkinplacegawkgawk 'BEGIN{print ENVIRON["AWKPATH"]}'

관련 정보