在我的文件中,每行包含由空格(前後有更多字段)分隔的五個數字字段。通過shell腳本,我需要能夠在這五個數字字段中正確選擇具有3,4和5個相同條目的行(即三個單獨的搜索,以便在這些字段中搜索具有3個匹配的行不會也返回行在這些領域有4或5場比賽)。選擇具有n個相同字段的行,在哨兵字符後
要查找相關字段,我的搜索必須找到第一個打開和關閉的圓括號對。括號結束後,緊跟在後面的五個字段是我感興趣的字段。一個潛在的複雜因素:有時一個或多個數字字段被單個短劃線/連字符替代,而不是數字。一種可能的簡化方法:五個字段將以(非嚴格)升序排列,並且任何連字符條目將始終位於其餘數字字段之前。
我將不勝感激這個一些sed/awk的建議。非常感謝!
[編輯]:我可以提取相關字段(詳見下面的評論),因此上面的透視段落是不必要的。下面是示例數據一旦相關字段提取:
109 110 111 111 112
110 110 111 111 112
99 99 99 112 112
99 99 99 112 112
100 101 101 112 112
102 102 102 112 112
102 102 103 112 112
102 103 103 112 112
102 104 104 112 112
102 104 104 112 112
103 104 104 112 112
102 105 105 112 112
102 105 105 112 112
103 105 105 112 112
102 106 106 112 112
102 106 107 112 112
103 106 107 112 112
104 106 107 112 112
102 107 107 112 112
104 107 107 112 112
104 107 107 112 112
106 107 108 112 112
107 107 108 112 112
107 107 108 112 112
102 109 109 112 112
102 109 109 112 112
104 109 109 112 112
102 109 110 112 112
103 109 110 112 112
104 109 110 112 112
102 110 110 112 112
104 110 110 112 112
104 110 110 112 112
107 109 111 112 112
107 109 111 112 112
106 110 111 112 112
107 110 111 112 112
107 110 111 112 112
109 110 112 112 112
110 110 112 112 112
107 112 112 112 112
112 112 112 112 112
這應該產生命中時在這些線路上n = 3時:
99 99 99 112 112
99 99 99 112 112
102 102 102 112 112
109 110 112 112 112
110 110 112 112 112
命中在這條線,當n = 4:
107 112 112 112 112
和一個在這條線,當n = 5命中:
112 112 112 112 112
歡迎來到StackOverflow!要[完成您的問題](http://stackoverflow.com/posts/34602978/edit),請包含可用的示例數據,您正在查找的輸出示例,您迄今爲止編寫的代碼以及輸出(或錯誤)代碼生成。我們只會樂意幫助你,但*你的代碼*是一個起點。 – ghoti
@ghoti是否有UI方式來插入文本,或者你只是手動粘貼它? –
我寫的代碼迄今爲止只隔離了五個字段: 'cat myfile | cut -d')'-f 2 | sed -e's/^ [\ t] * //'| tr -s''|切-d''-f1-5' 我真的不知道匹配部分從哪裏開始。但是我應該簡化這個問題,所以它只會詢問如何在5個字段中找到具有n個匹配字段的行,作爲我可以解決的「哨兵」問題。謝謝。 – user3575075