linux - Bash 脚本 (awk-sed-grep) 检查下一行中的数字是否比上一行多 1

标签 linux bash shell awk sed

我有一个文件:

Time= 12:40:41, value = 1, data=2, data2=4,timeEnter=12:34:34
Time= 12:40:41, value = 2, data=2, data2=4,timeEnter=12:34:34
Time= 12:40:41, value = 3, data=2, data2=4,timeEnter=12:34:34
Time= 12:40:41, value = 4, data=2, data2=4,timeEnter=12:34:34
...
...
Time= 12:40:41, value = 123456, data=2, data2=4,timeEnter=12:34:34
Time= 12:40:41, value = 123457, data=2, data2=4,timeEnter=12:34:34
Time= 12:40:41, value = 123458, data=2, data2=4,timeEnter=12:34:34
Time= 12:40:41, value = 123459, data=2, data2=4,timeEnter=12:34:34

我想使用 Cat | 读取此文件grep awk。 并希望能够使用这些组合来运行命令,以检查“值”部分中的每个数字是否在下一行中增加 1。 如果无论如何都没有遵循这一点,我希望能够看到这一点。

到目前为止:我陷入了困境: $ Cat 文件名 | awk -F "= "'{print $4}'

谢谢

最佳答案

Perl 解决方案:

perl -ne 'next unless /value = ([0-9]+)/;
          print "$.: $_" if 1 + $value != $1;
          $value = $1' -- file.name
  • -n 逐行读取输入
  • next如果没有要检查的值,则跳过处理该行。
  • $value 保留上一行的值。如果捕获的值不等于旧的一加一,则打印行号 ($.) 和行 ($_)。

关于linux - Bash 脚本 (awk-sed-grep) 检查下一行中的数字是否比上一行多 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47670512/

相关文章:

c++ - 第二次无法捕获段错误

bash - UNIX/Linux shell 脚本 : Removing variant form emoji from a text

bash - 按升序在文本的每一行前面添加一个字母

linux - 如何同时运行两个命令?

python - Eclipse PyDev 不会将某个模块视为导入,而是将其他模块视为同一目录中的模块

linux - 如何在 vim 的 ex 模式下从缓冲区粘贴?

bash - 如何仅检查自上次 checkin bash以来添加的行

linux - Jenkins 可以在无代理的 linux 主机上运行 shell 脚本吗

具有文件保存和顺序文件命名的 Linux shell 脚本

shell - 未生成文件描述符