0

uniq のマニュアルページによると

-f オプションは、フィールドをスキップするためのものです

文字をスキップする -s オプション

これら2つのオプションが実際にどのように機能するか、誰かが関連する例で説明できますか?

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

2 つの別々の行を出力しますが、最初の 2 つのフィールドをスキップして (-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

ここでは、(フィールドではなく) 最初の 2 文字をスキップします。

フィールドの定義に関しては、マニュアルに記載されています。

フィールドは一連の空白 (通常はスペースおよび/またはタブ) であり、その後に空白以外の文字が続きます。

于 2011-11-10T11:32:31.913 に答える