uniq のマニュアルページによると
-f オプションは、フィールドをスキップするためのものです
文字をスキップする -s オプション
これら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
私には明確に見えますが、とにかくここに行きます。
-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 文字をスキップします。
フィールドの定義に関しては、マニュアルに記載されています。
フィールドは一連の空白 (通常はスペースおよび/またはタブ) であり、その後に空白以外の文字が続きます。