![텍스트 줄에서 값 찾기 및 바꾸기](https://rvso.com/image/36014/%ED%85%8D%EC%8A%A4%ED%8A%B8%20%EC%A4%84%EC%97%90%EC%84%9C%20%EA%B0%92%20%EC%B0%BE%EA%B8%B0%20%EB%B0%8F%20%EB%B0%94%EA%BE%B8%EA%B8%B0.png)
한 줄의 텍스트만 포함하는 텍스트 파일이 있습니다.
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 inplace
as 는 누군가 악성 코드를 심었을 수 있는 현재 작업 디렉터리에서 확장명(as 또는 )을 먼저 gawk
로드하려고 시도합니다 . 와 함께 제공되는 확장 프로그램 의 경로는 시스템에 따라 다를 수 있습니다.inplace
inplace
inplace.awk
inplace
gawk
gawk 'BEGIN{print ENVIRON["AWKPATH"]}'