1
我已經偶然發現了這個問題,我通過鉤子或騙子解決了這個問題。但我需要你的幫助,以精確的解決方案。作爲awk/sed
的初學者,我無法用一個班輪(我確定有這個班輪)或腳本來解決它,儘管我可以使用很多管道。刪除一列中具有特定條目的csv中的行,並重復其他列中的條目
這裏有一個問題:
我有類似這樣的條目大.csv文件:
文件(分隔空間)
$ cat file
a d e r None
c f g r a
c f g r None
d a d e c
d a d e None
g f r t None
g f t r None
k f r e d
r e t y None
s c d er d
g f r t 4
有沒有重複。但是如果你仔細看,有1,2,3,4列正在重複的條目,唯一的變化是第5列,其中'None'
。所以我需要刪除在1,2,3,4字段中重複的行(記錄),並且在第5列中有None
。
這裏是我寫的代碼,它的工作,但沒有人會建議:
awk '{print $5,$4,$3,$2,$1}' file | sed 's/None/zzz/g' | sort | awk '!array[$2,$3,$4,$5]++' | sed 's/zzz/None/g'
,這裏是我得到的輸出,和我期待的。
4 t r f g
a r g f c
c e d a d
d e r f k
d er d c s
None r e d a
None r t f g
None y t e r
與zzz
替換None
的目的是排序後,行會出現在端,和awk
將從剩餘的列刪除重複的第二次出現。 同樣是顛倒列序列並將其重新反轉的原因。分類。
請幫忙。謝謝!
謝謝@Kent。這工作。雖然花了一些時間來理解! – rohitkulky 2013-05-10 11:30:56