你能解释一下为什么这个简单的在线工作不起作用吗?谢谢你的时间。
awk 'BEGIN{i=1}{if($2 == i){print $0} else{print "0",i} i=i+1}' check
输入名称为“check”的文本文件:
a 1
b 2
c 3
e 5
f 6
g 7
期望的输出:
a 1
b 2
c 3
0 4
e 5
f 6
g 7
收到的输出:
a 1
b 2
c 3
0 4
0 5
0 6
答案 0 :(得分:0)
i
awk 'BEGIN{i=1}{ if($2 != i){print "0",i++; } print $0; i++ }' check
(您正在插入新行)或简化:
Encoding('ʘ')
答案 1 :(得分:0)
你们因为:
而被打破这里需要一个while循环 - 当你的间隙大于一个数字时,它也会处理这种情况。
awk '
NR == 1 {prev = $2}
{
while ($2 > prev+1)
print "0", ++prev
print
prev = $2
}
' check
或者,如果你喜欢难以穿透的单行:
awk 'NR==1{p=$2}{while($2>p+1)print "0",++p;p=$2}1' check
答案 2 :(得分:0)
您只需要:
awk '{while (++i<$2) print 0, i}1' file
查找
$ cat file
a 1
b 2
c 3
e 5
f 6
g 7
k 11
n 14
$ awk '{while (++i<$2) print 0, i}1' file
a 1
b 2
c 3
0 4
e 5
f 6
g 7
0 8
0 9
0 10
k 11
0 12
0 13
n 14