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

发布于 2024-12-14 16:27:36 字数 99 浏览 0 评论 0原文

根据 uniq 的手册页,

-f 选项用于跳过字段

-s 选项用于跳过字符

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

According to manual page for uniq

the -f option is for skipping fields

the -s option for skipping characters

Can someone explain with relevant examples, how actually these two options work?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

你没皮卡萌 2024-12-21 16:27:39

对我来说这看起来很清楚,但无论如何你还是可以的。

-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

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

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

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

It looks clear to me but here you go anyway.

-f skips fields. So

(ol)noufal@sanitarium% echo "a b c\nd e c" | uniq -c
      1 a b c
      1 d e c

prints two separate lines but if you skip the first two fields (-f2) and compare only the last,

(ol)noufal@sanitarium% echo "a b c\nd e c" | uniq -c -f2
      2 a b c

they're both the same.

Similarly,

(ol)noufal@sanitarium% echo "abc\ndec" | uniq -c
      1 abc
      1 dec
(ol)noufal@sanitarium% echo "abc\ndec" | uniq -c -s2
      2 abc

We skip the first two characters here (rather than fields).

As for the definition of fields, the manual has that.

A field is a run of blanks (usually spaces and/or TABs), then
non-blank characters.

旧城烟雨 2024-12-21 16:27:38

Vanilla 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 跳过输入的第一个字段(这里,hosts ):

/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

Vanilla uniq:

/tmp$ cat > foo
foo
foo
bar
bar
bar
baz
baz
/tmp$ uniq foo
foo
bar
baz

uniq -s to skip over the first character:

/tmp$ cat > bar
1foo
2foo
3bar
4bar
5bar
6baz
7baz
/tmp$ uniq -s1 bar
1foo
3bar
6baz

uniq -f to skip over the first field of the input (here, hosts):

/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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文