我想將列2中的值與列3中的值進行比較。該比較不在同一行的第2列和第3列中的值之間。 用於比較的條件是:比較值與同一個字符串關聯
(1)值在COL2一排與另一行中第3欄第值,當這些行在列相同的字符串進行比較1.
(2)僅當第1列中的字符串重複至少兩次時才進行比較。
(3)在第2欄值是大於value在第3列中不同的行中,當兩行具有相同的列串1.
一個例子的輸入文件是:
john 0 100 john 120 200 smith 1 400 claris 300 500 claris 510 700 claris 300 500 dexter 10 400 dexter 100 300 sam 200 300 sam 310 500 tom 100 300 bruce 200 500 bruce 520 900
期望的輸出
john 0 100 john 120 200 claris 300 500 claris 510 700 claris 300 500 sam 200 300 sam 310 500 bruce 200 500 bruce 520 900
col1中'dexter'的行未打印。 'dexter'存在於兩行中,但col 2中的值小於其他行中的col3中的值,即,10小於300並且100小於400.具有'bruce'的行被打印,因爲;因爲第二排和第二排中col3中有大於500的col 2中有520個。
我用awk試過了,下面是一個例子。看起來像我不能找出第一通過印刷只是重複線,然後比較所述相關值中的另一行,其具有相同的字符串在COL1
awk -F "\t" 'NR==FNR{a[$1]++; b[$1]=$2; c[$1]=$3;next} {for (i in b) if (a[$1] >2 && b[i]>c[i]) print}' test.file test.file
我還試圖將其在步驟與COL3比較COL2。 我無法弄清楚如何比較與同一個字符串關聯的值。
爲什麼您解決* TEST.FILE *兩次,在命令行?我不明白哪個規則保留* dexter * out!?您寫道:*第2列中的值大於第3 *列中的值,但在您的示例中,我沒有看到與此匹配的一行。 –
我明白你爲什麼要把這個文件放兩次,但是@ F.Hauri的其他問題是相當重要的:哪一個規則保持了敏捷?_和「_You寫道:第2列中的值大於第3列中的值,但是我沒有在您的示例中,請參見與此匹配的一行._「 – jas
要使用數組重複打印第1列中重複至少兩次的字符,我將文件傳遞給了兩次。我同意有更多的方法。對不起原來的問題不清楚。我需要比較列2和列3中跨行的值,只要它們與列1中的相同字符串相關聯。 – Amit