2016-07-22 5 views
-1

私はこのファイルに時間があります。いくつかは日数がありますが、主にhh:mm形式です。フォーム全体がdd + hh:mm 私は "tr -s '+:' ':' ''をdd:hh:mm形式に変換し、split($ 1、tm、": ")を秒単位で計算しようとしていました。 。 しかし、私が直面している問題は、この操作の後、hh:mmの形式はtm [1]にhhを持ちますが、dd:hh:mmならばtm [1]はddになります。 hh:mmの形式でhhをtm [2]に入れ、tm [1]を0にする方法はありますか?正しい形式に文字列を分割するシェルを使用する方法?

4+11:26 
10+06:54 
20:27 

は([3] [2]、TM [1]、TM TMの形で)私が欲しかった出力は次のようになり、入力

ある:

4 11 26 
10 06 54 
0 20 27 
+0

に変換されます。 –

+0

ちょうど追加されました。私に思い出させてくれてありがとう! – Edccccch

+0

私は最初に欠落した日を挿入して入力を正規化し、そこからsed: 'sed '/ + /! s/^/0 + /; s/[+:]// g; 'あなたのファイル ' –

答えて

1

Iが最初に希望

cat a.txt | sed 's/^\([^+]\+\)$/0+\1/g' | tr '+:' ' ' 
:sedをして前処理は、その後、 tr +:スペースに(プラス記号を持っていない行で 0+を欠け追加します)

それともとしてラースによって提案された、短いsedバージョン:救助へ

cat a.txt | sed '/+/! s/^/0+/;' | tr '+:' ' ' 
1

awk!あなたの入力ファイルを使用して、awkに変換し、計算を行うことができます

値は、あなたが持っているものを入力して、あなたが期待するものの出力を示して下さい分

$ awk -F: '{if($1~/+/){split($1,f,"+");h=f[1]*24+f[2]} 
      else h=$1; m=h*60+$2; print $0 " --> " m}' file 

4+11:26 --> 6446 
10+06:54 --> 14814 
20:27 --> 1227 
関連する問題