我有一個需要一些操作的大型數據庫文件。基本上我需要避免重複的字段由'|'分隔爲:awk - 僅打印第一行重複項和它下面的行
-- TITLE1 | TITLE2 |T3 |TITLE4|TITLE5
----------|----------|-----|------|---------------
--
DATA1 | SAME | | | blah blah
ELIGIBLE | x1
DATA1 | SAME | | blah | blah
ELIGIBLE | x2
DATA1 | SAME | | blah | blah blah
ELIGIBLE | x2
DATA2 | SAME | | | blah blah
ELIGIBLE | y1
DATA2 | SAME | | blah | blah
ELIGIBLE | y2
DATA2 | SAME | | blah | blah blah blah blah
ELIGIBLE | y2
DATA3 | SAME | | | blah blah
ELIGIBLE | z1
DATA3 | SAME | | blah | blah
ELIGIBLE | z2
DATA3 | SAME | | blah | blah blah blah blah
ELIGIBLE | z2
我使用的代碼是
BEGIN{ FS = "|" }
{
count[$1]++;
if (count[$1] == 1)
first [$1] = $0;
if (count[$1] > 1)
print first[$1]
NR==1;
}
但它給我的輸出:
-- TITLE1 | TITLE2 |T3 |TITLE4|TITLE5
----------|----------|-----|------|---------------
--
DATA1 | SAME | | | blah blah
ELIGIBLE | x1
DATA2 | SAME | | | blah blah
DATA3 | SAME | | | blah blah
我寧願像這樣的輸出:
-- TITLE1 | TITLE2 |T3 |TITLE4|TITLE5
----------|----------|-----|------|---------------
--
DATA1 | SAME | | | blah blah
ELIGIBLE | x1
DATA2 | SAME | | | blah blah
ELIGIBLE | y1
DATA3 | SAME | | | blah blah
ELIGIBLE | z1
我並不關心標題欄,但n通過它來顯示數據。對不起,業餘解釋,但任何解決方案的幫助,將不勝感激。我是新手,當涉及到Linux命令行腳本,所以如果任何人也可以解釋爲什麼我的答案是錯誤的,我將不勝感激。我不侷限於awk,並且可以使用任何命令解決方案。我只想用awk嘗試解決方案。
所以,你需要保留的數據的第一行與給定TITLE1扔掉剩下的,即使他們有不同的TITLE5的等? – 2013-05-14 15:14:19
是正確的,並保留符合條件的行。 – 2013-05-14 15:40:03