我的文件看起来像这样,(可以有更多列或行):
dif-1-2-3-4.com 1 1 1
dif-1-2-3-5.com 1 1 2
dif-1-2-4-5.com 1 2 1
dif-1-3-4-5.com 2 1 1
dif-2-3-4-5.com 1 1 1
我想比较这些数字:
1 1 1
1 1 2
1 2 1
2 1 1
1 1 1
并且只打印那些不重复的行,所以我明白了:
dif-1-2-3-4.com 1 1 1
dif-1-2-3-5.com 1 1 2
dif-1-2-4-5.com 1 2 1
dif-1-3-4-5.com 2 1 1
答案 0 :(得分:4)
另一个简单方法是myBezierPath.cgPath.isClosed()
sort
使用KEYDEF进行字段2-4 uniq
并使用sort
跳过字段1,例如
uniq
示例使用/输出
$ sort file.txt -k 2,4 | uniq -f1
答案 1 :(得分:2)
保持已经看到的三元组的运行记录,并且仅在它们第一次出现时打印:
$ awk '!(($2,$3,$4) in seen) {print; seen[$2,$3,$4]}' file
dif-1-2-3-4.com 1 1 1
dif-1-2-3-5.com 1 1 2
dif-1-2-4-5.com 1 2 1
dif-1-3-4-5.com 2 1 1
答案 2 :(得分:2)
尝试使用以下<h1>JavaScript Progress Bar</h1>
<div id="myProgress">
<div id="myBar">0%</div>
<input type="hidden" id="bar" name="bar" value="60" />
</div>
<div id="myProgress_1">
<div id="myBar_1">0%</div>
<input type="hidden" id="bar_1" name="bar" value="60" />
</div>
<br>
<button>Click Me</button>
代码:
awk
<强> 说明: 强>
创建名为awk '!a[$2,$3,$4]++' Input_file
的数组及其索引为a
。这里的条件是$2,$3,$4
,(这意味着数组!a
中不存在任何行$2,$3,$4
),然后做两件事:< / p>
a
中的相同$2,$3,$4
索引不成立。 a
在条件模式下工作,然后操作),因此默认操作将是打印当前线。这将继续显示 Input_file 中的所有行,并且不会打印最后一行,因为其awk
已存在于数组$2,$3,$4
中。 我希望这会有所帮助。
答案 3 :(得分:1)
这适用于POSIX和gnu awk:
$ awk '{s=""
for (i=2;i<=NF; i++)
s=s $i "|"}
s in seen { next }
++seen[s]' file
可以缩短为:
$ awk '{s=""; for (i=2;i<=NF; i++) s=s $i "|"} !seen[s]++' file
还支持可变数量的列。
如果你想要一个同样尊重文件顺序的sort
uniq
解决方案(即打印重复的第一组,而不是后面的那些),你需要做一个装饰,排序,去装饰方法
你可以:
cat -n
使用行号装饰文件; sort -k3 -k1n
首先对从3行开始的所有字段进行排序,然后在行的末尾以数字方式对添加的行号进行排序; -u
版本支持该版本,请sort
,或使用uniq -f3
仅保留重复组中的第一个版本; 最后使用sed -e 's/^[[:space:]]*[0-9]*[[:space:]]*//
删除添加的行号:
cat -n file | sort -k3 -k1n | uniq -f3 | sed -e 's/^[[:space:]]*[0-9]*[[:space:]]*//'
在这种情况下,Awk更容易,更快。