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