输入文件
Time Value Flag
06:15:10 49.95 Actual
00:00:00 0.00 NoValue
06:22:50 49.94 Actual
06:23:00 49.93 Actual
06:23:10 49.93 Actual
06:23:20 49.93 Actual
06:23:30 49.93 Actual
06:24:40 49.92 Actual
00:00:00 0.00 NoValue
Run Code Online (Sandbox Code Playgroud)
我必须替换与单词 匹配的整行NoValue。这意味着每当脚本找到带有 的行时NoValue,它都会用上次记录的时间替换整行。
我的结果将显示为,
Time Value Flag
06:15:10 49.95 Actual
06:15:10 49.95 Actual
06:22:50 49.94 Actual
06:23:00 49.93 Actual
06:23:10 49.93 Actual
06:23:20 49.93 Actual
06:23:30 49.93 Actual
06:24:40 49.92 Actual
06:24:40 49.92 Actual
Run Code Online (Sandbox Code Playgroud)
我努力了
awk 'NR%3==NoValue{ name=$0; next } { print name, $0 }' Inputfile
Run Code Online (Sandbox Code Playgroud)
但它正在合并我不想要的线条。
我的操作系统版本是 Solaris 5.8
awk如果条件为真,您可以打印上一行$3 == "NoValue":
awk '$3 == "NoValue" { $0=prev }{prev=$0} 1' file
Time Value Flag
06:15:10 49.95 Actual
06:15:10 49.95 Actual
06:22:50 49.94 Actual
06:23:00 49.93 Actual
06:23:10 49.93 Actual
06:23:20 49.93 Actual
06:23:30 49.93 Actual
06:24:40 49.92 Actual
06:24:40 49.92 Actual
Run Code Online (Sandbox Code Playgroud)
您可以看到:“如果满足条件,则打印上一行”:/sf/ask/1941865621/