用于从上述字段中减去的 awk 脚本
您好,我的输入文件包含一个字段:
30
58
266
274
296
322
331
我需要输出为第二行和第一行(58-30=28)以及第三行和第二行(266-58=208)等的差值。 我的输出应如下所示:
30 30
58 28
266 208
274 8
请问有什么帮助吗?
Hi I have my input file with one field:
30
58
266
274
296
322
331
I need the output to be the difference of 2nd and 1st rows(58-30=28) and 3rd and 2nd rows(266-58=208) and so on.
my output should look like below:
30 30
58 28
266 208
274 8
any help please?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
根据评论更新没有
cat/xargs
:Update upon comment Without
cat/xargs
:实际上,您并不需要 Khachick 答案中的 for 循环,因为 Awk 无论如何都会遍历所有行。更简单的是:
但是,也可以通过在 BEGIN 块中初始化变量来跳过您真正不想要的第一行,并且如果在更改其值之前对变量进行了初始化,则不执行打印。有点像:
You don't actually need the for loop from Khachick's answer as Awk will go through all the rows anyway. Simpler is:
However it is also possible to skip the first row that you don't really want by initialising a variable in the BEGIN block and not doing the print if the variable is so initialised before changing its value. Sort of like: