我有一些文件内容并想uniq
对其使用命令但它不起作用我错过了什么?
$ cat ornek_2
elma
elma
armut
armut
erik
kayısı
üzüm
用uniq
命令;
$ cat ornek_2 | uniq
elma
armut
armut
erik
kayısı
üzüm
使用sort | uniq
命令
$ cat ornek_2 | sort | uniq
armut
armut
elma
erik
kayısı
üzüm
答案1
两行“armut”并不完全相同。其中一行末尾有一个空格。
我在编辑问题时意识到了这一点。我恰好点击了行末,注意到了单词和光标之间的间隙。但是,如果我当时没有意识到这一点,我会uniname
像这样输入这两行,以分析每个字符:
$ grep "armut" ornek_2 | uniname
character byte UTF-32 encoded as glyph name
0 0 000061 61 a LATIN SMALL LETTER A
1 1 000072 72 r LATIN SMALL LETTER R
2 2 00006D 6D m LATIN SMALL LETTER M
3 3 000075 75 u LATIN SMALL LETTER U
4 4 000074 74 t LATIN SMALL LETTER T
5 5 00000A 0A LINE FEED (LF)
6 6 000061 61 a LATIN SMALL LETTER A
7 7 000072 72 r LATIN SMALL LETTER R
8 8 00006D 6D m LATIN SMALL LETTER M
9 9 000075 75 u LATIN SMALL LETTER U
10 10 000074 74 t LATIN SMALL LETTER T
11 11 000020 20 SPACE
12 12 00000A 0A LINE FEED (LF)
参见上述输出中的字符 11
如果您想检查其他行是否以空格(空格、制表符等)结尾,可以使用 grep:
$ grep -E '\s+$' ornek_2
armut
üzüm
顺便说一句,您不需要将管道cat
插入uniq
或sort
。您可以直接运行uniq ornek_2
或sort ornek_2 | uniq
,尽管在这种情况下这不是什么大问题。更多详细信息请见:我应该关心不必要的猫吗? - Unix 和 Linux
答案2
我尝试了你的示例文件。我也遇到了你的错误。但是当我写阿尔穆特再次由我自己解决了问题!
如果您从任何地方复制此文本,请将其再次输入到您的文件中。
sort a | uniq -ic
2 armut
2 elma
1 erik
1 kayısı
1 üzüm