0

根据 uniq 的手册页

-f 选项用于跳过字段

-s 用于跳过字符的选项

有人可以用相关示例来解释这两个选项实际上是如何工作的吗?

4

2 回答 2

2

香草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
于 2011-11-10T11:30:28.170 回答
0

我看起来很清楚,但不管怎样,你去吧。

-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

我们在这里跳过前两个字符(而不是字段)。

至于字段的定义,手册上有。

字段是一系列空白(通常是空格和/或制表符),然后是非空白字符。

于 2011-11-10T11:32:31.913 回答