我有一个像我在这里链接的数据集:http: //pastebin.com/7tpBAqua
请注意,前两行不是数据(数字),尽管如此,第二行与第三行相关联。同样,第 4 行与第 5 行相关联,依此类推。
目前,我们有一个 awk 脚本,它输出高于阈值的所有行号的信息(低于 -1 和高于 1 的任何内容),这是输出:
71
72
88
98
99
.... and so on...
如果数字是偶数,我们需要输出它后面的奇数(即如果是 72,则输出 72 换行,然后输出 73)
如果数字是奇数,那么我们需要在它之前输出偶数(即如果是 99 则输出 98 新行,然后是 99)。
70
71
72
73
88
89
等等……</p>
同样,我们的想法是我们在这个数据集中发现了噪音,因此我们需要消除它以使研究有效。感谢您的任何帮助,您可以提供。
编辑:从下面提供的解决方案中,我决定将其分解为我自己的个人学习以及可能阅读此内容的任何其他人:
"awk -F'[ ,]' 'NR>2{for (i=2;i<=NF;i++) if ($i<-1 || $i>1) print (NR%2==0) ? NR ORS NR + 1 : NR - 1 ORS NR; next }' file.txt
首先,我们将制定一个基本算法:
if (cur == even)
print cur + \n + prev
else if (cur == odd)
print prev + \n + cur
-F'[ ,]' # a flag for field seperator and designating it with [ ,]
'NR>2 # The total Number of input Records seen so far.
{for (i=2;i<=NF;i++) # for loop starting at 2, ending when greater or equal to NR
if ($i<-1 || $i>1) # when these conditions are met then
print (NR%2==0) # print NR modulus 2
?
NR ORS NR + 1 # current OR next
: NR - 1 ORS NR; # comparisons?
next }' # now go to the next NR
file.txt # save to file.txt