-f,-s选项如何与uniq命令一起使用?

时间:2011-11-10 11:25:05

标签: linux shell unix uniq

根据uniq的手册页

-f选项用于跳过字段

跳过字符的-s选项

有人可以用相关的例子来解释,这两个选项究竟是如何运作的?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

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

关于字段的定义,手册有。

  

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