txt 파일의 각 줄에서 두 번째와 세 번째 물결표 사이의 값을 검색하고 증가시킵니다.

txt 파일의 각 줄에서 두 번째와 세 번째 물결표 사이의 값을 검색하고 증가시킵니다.

txt 파일의 각 줄에서 두 번째와 세 번째 물결표 사이의 값을 검색하고 증가시킬 수 있는 방법이 있는지 궁금합니다. 어쩌면 vi이것이 가능할까요?

test.txt예를 들어 다음과 같은 두 줄의 파일이 있습니다 .

A~Test1~9463~testA
B~Test2~4825~testB

다음과 같이 변경할 수 있습니다.

A~Test1~8352~testA
B~Test2~3714~testB

답변1

사용 awk:

awk 'BEGIN{FS=OFS="~";v=1111}{$3-=v; print $3}' file 

그러면 수정된 파일이 표준 출력으로 출력됩니다.

A~Test1~8352~testA
B~Test2~3714~testB

시간 값(hhmmss 형식)을 빼려면 다음을 수행할 수 있습니다(귀하의 의견에 따라).

입력하다:

A~Test1~203000~testA
awk -v dif="014000" '
    BEGIN{ FS=OFS="~"
           difS=toSec(dif) }
    { f3=""
      shoS=toSec($3)-difS
      for( per=3600; per>=1; per/=60 ) {
           ord=int(shoS/per)
           f3=f3 sprintf( "%02s", ord )
           shoS-=(ord*per) } 
      $3=f3
      print }
    function toSec(x) { 
      hh=substr(x, 1, 2)
      mm=substr(x, length(x)-3, 2)
      ss=substr(x, length(x)-1, 2)
      return ss+(mm*60)+(hh*3600) }
    ' file

산출:

A~Test1~185000~testA

관련 정보