ここにリンクしたようなデータセットがあります: http://pastebin.com/7tpBAqua
最初の 2 行はデータ (数値) ではないことに注意してください。これにもかかわらず、2 行目は 3 行目に関連付けられています。同様に、4 行目は 5 行目に関連付けられます。
現在、しきい値を超えたすべての行番号 (-1 未満および 1 を超えるもの) に関する情報を出力する awk スクリプトがあります。これが出力です。
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