根据 uniq 的手册页
-f 选项用于跳过字段
-s 用于跳过字符的选项
有人可以用相关示例来解释这两个选项实际上是如何工作的吗?
香草uniq
:
/tmp$ cat > foo
foo
foo
bar
bar
bar
baz
baz
/tmp$ uniq foo
foo
bar
baz
uniq -s
跳过第一个字符:
/tmp$ cat > bar
1foo
2foo
3bar
4bar
5bar
6baz
7baz
/tmp$ uniq -s1 bar
1foo
3bar
6baz
uniq -f
跳过输入的第一个字段(这里是主机):
/tmp$ cat > baz
127.0.0.1 foo
192.168.1.1 foo
example.com bar
www.example.com bar
localhost bar
gateway1 baz
192.168.1.254 baz
/tmp$ uniq -f1 baz
127.0.0.1 foo
example.com bar
gateway1 baz
我看起来很清楚,但不管怎样,你去吧。
-f
跳过字段。所以
(ol)noufal@sanitarium% echo "a b c\nd e c" | uniq -c
1 a b c
1 d e c
打印两个单独的行,但如果您跳过前两个字段 (-f2) 并仅比较最后一个,
(ol)noufal@sanitarium% echo "a b c\nd e c" | uniq -c -f2
2 a b c
他们都是一样的。
相似地,
(ol)noufal@sanitarium% echo "abc\ndec" | uniq -c
1 abc
1 dec
(ol)noufal@sanitarium% echo "abc\ndec" | uniq -c -s2
2 abc
我们在这里跳过前两个字符(而不是字段)。
至于字段的定义,手册上有。
字段是一系列空白(通常是空格和/或制表符),然后是非空白字符。