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

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

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

1314:Battery:1.90:50:30

a를 하고 50과 30 값을 아래와 같은 값으로 변경하는 grep방법 이 없을까 고민 중입니다.sed

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 inplace현재 작업 디렉터리(as or)에서 확장 기능을 먼저 gawk로드 하려고 하면 누군가가 해당 디렉터리에 악성 코드를 심었을 수 있습니다. 시스템과 함께 제공되는 확장 프로그램 의 경로 는 다를 수 있습니다. 출력을 참조하세요.inplaceinplaceinplace.awkinplacegawkgawk 'BEGIN{print ENVIRON["AWKPATH"]}'

관련 정보