awk
新手在这里!我正在寻求帮助来解决一个简单的具体任务。
以下是file.txt
1
2
3
5
6
7
8
9
如您所见,缺少一个数字(数字4)。我想在控制台上打印缺少的4号。我的想法是将当前行号与条目进行比较,只要它们不匹配,我就会打印行号并退出。我试过了
cat file.txt | awk '{ if ($NR != $1) {print $NR; exit 1} }'
但它只打印换行符。
我正试图通过这个小小的练习来学习awk
。因此,我主要对使用awk
的解决方案感兴趣。我也欢迎解释为什么我的代码没有达到我的预期。
答案 0 :(得分:2)
试试这个 -
list
答案 1 :(得分:2)
因为你已经有了解决方案,所以这是另一种方法,与之前的值进行比较。
awk '$1!=p+1{print p+1} {p=$1}' file
如果您有多个缺失值,您的位置比较将无法正常工作。
答案 2 :(得分:0)
也许这会有所帮助:
seq $(tail -1 file)|diff - file|grep -Po '.*(?=d)'
4
因为我正在学习awk
awk 'BEGIN{i=0}{i++;if(i!=$1){print i;i=$1}}' file
4
`awk` explanation read each number from `$1` into array `i` and increment that number list line by line with `i++`, if the number is not sequential, then print it.
cat file
1
2
3
5
6
7
8
9
11
12
13
15
awk 'BEGIN{i=0}{i++;if(i!=$1){print i;i=$1}}' file
4
10
14