我的i / p文件如下:
name 1
info 21
city 28
pin 31
state 34
- 39
并且看o / P将是:(“,l-”对于所有行是恒定的)
20,l-name
7,l-info
3,l-city
3,l-pin
5,l-state
以下shell代码:
awk 'NR>1{ printf "%d,l-%s\n", $2 - val, label } {label=$1; val=$2}' input
我正在等待
1,
21,l-name
24,l-info
28,l-city
但我需要两个值之间的区别如:
20,l-name
3,l-info
4,l-city
这里我想从第二个数字中减去第一个数字作为它之间的差距。请帮帮我......
答案 0 :(得分:1)
您可以使用此awk
:
awk -v OFS=, 'NR>1{print ($2 - n), "l-" v} {v = $1; n = $2}' file
20,l-name
7,l-info
3,l-city
3,l-pin
5,l-state
command stores every row's 2 columns in 2 variables
v and
n` 答案 1 :(得分:0)
很奇怪 - 在我的Mac上运行得到正确的结果: -
$ cat inp
name 1
info 21
city 28
pin 31
state 34
- 39
$ awk 'NR>1{ printf "%d,l-%s\n", $2 - val, label } {label=$1; val=$2}' inp
20,l-name
7,l-info
3,l-city
3,l-pin
5,l-state
猜测一下,您需要检查awk的版本,因为它似乎没有遵守NR>1
模式并且没有执行{{1}减法。
可以通过创建另一个变量,执行减法,然后执行$2 - value
printf