txt ファイルの各行で、2 番目と 3 番目のチルダの間の値を検索して増やします。

txt ファイルの各行で、2 番目と 3 番目のチルダの間の値を検索して増やします。

txtファイルの各行で2番目と3番目のチルダの間の値を検索して増やす方法があるかどうか疑問に思います。たぶんviこれは可能ですか?

test.txtたとえば、次の2行のファイルがあります。

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

おすすめ記事