我有一个需要一些操作的大型数据库文件。本质上,我需要避免由“|”分隔的重复字段一 为了:
-- 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
我并不真正关心标题栏,但需要它来显示概述的数据。对不起,业余的解释,但任何解决方案的帮助将不胜感激。我是 linux 命令行脚本的新手,所以如果有人也能解释为什么我的答案是错误的,我将不胜感激。我不限于 awk,可以使用任何命令解决方案。我只是想尝试使用 awk 的解决方案。