AWK将分钟和秒转换为仅秒

Tho*_*ine 0 linux awk

我有一个文件,我试图转换成几秒钟.它看起来像这样:

49.80
1:03.40
1:01.00
1:00.40
1:01.00
Run Code Online (Sandbox Code Playgroud)

我试过了:

awk -F: '{seconds=($1*60);seconds=seconds+$2;print seconds}' file
Run Code Online (Sandbox Code Playgroud)

哪个输出:

2988
63.4
61
60.4
61
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

sed 's/^/:/g' file | awk -F: '{seconds=($2*60);seconds=seconds+$3;print seconds}'
Run Code Online (Sandbox Code Playgroud)

其结果与结果相同.我想获得这些结果:

49.80
63.4
61
60.4
61
Run Code Online (Sandbox Code Playgroud)

nu1*_*73R 5

只需添加检查记录是否包含秒和分钟

awk -F: 'NF==1; NF==2{seconds=($1*60);seconds=seconds+$2;print seconds}'
Run Code Online (Sandbox Code Playgroud)
  • NF 每个记录(行)中的字段数.

  • NF==1如果它只包含一个字段,我们就不会做任何计算.看到没有{action}与此检查相关的部分.因此awk执行默认操作以打印整行

  • NF==2如果字符串包含2个字段,则为True.采取执行计算的相关操作.

测试

$ awk -F: 'NF==1; NF==2{seconds=($1*60);seconds=seconds+$2;print seconds}' file
49.80
63.4
61
60.4
61
Run Code Online (Sandbox Code Playgroud)