更新:#3(相似度移除)
嘗試是這樣的:
awk -v OFS="\n" '
function swap(q) {w=a[q];a[q]=a[q+1];a[q+1]=w}
function akin(t,x,y) {gsub(x,"#",t);gsub(y,x,t);gsub("#",y,t);return t}
function look() {
k=a[1]"."a[2]"."a[3]
if(k in m) return 1
#for(j=0;j<6;++j) { # Make permutations
#k=a[1]"."a[2]"."a[3]
m[k]
m[akin(k,1,2)]
m[akin(k,1,3)]
m[akin(k,2,3)]
#swap(j%2+1)
#}
return 0
}
/^[[:space:]]*$/{next} # Skip empty lines
{a[i++]=$0} # Store data
i==4 { # Process data
i=0
if (look()) next;
print a[0], a[1], a[2], a[3]
}
' data
它定義了兩個功能。 swap
交換陣列中的兩個元素a
和look
檢查是a
是在m
檢查哈希。如果不是,則將a
添加到m
(不考慮a[0]
)。
然後讀取四行並從矩陣行創建一個鍵。如果密鑰已經存在,則跳過。否則打印數據。如果空行具有重要性,則將"\n"
添加到每行print
行的末尾。
輸出:
1###########################
303
301
100
2###########################
120
001
212
3###########################
230
030
210
4###########################
211
211
100
5###########################
111
313
300
6###########################
230
330
232
它無論什麼哈希前的是多少?因爲其中一些將要去。它真的必須是awk/sed,還是它可以是任何命令行工具?哦,你的例子不包含重複,對吧? –
我有幾乎包含這些矩陣的10頁文檔。其中一些是相同的。在該示例中,沒有相同的矩陣 –