English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Linux uniq Befehl

Linux 命令大全

Der Linux uniq-Befehl wird verwendet, um wiederholte Zeilen und Spalten in Textdateien zu überprüfen und zu löschen und wird normalerweise mit dem sort-Befehl verwendet.

uniq kann wiederholte Zeilen und Spalten in Textdateien überprüfen.

Syntax

uniq [-cdu][-f<Feld>][-s<Zeichenposition>][-w<Zeichenposition>][--help][--version][Eingabedatei][Ausgabedatei]

Parameter

  • -coder--count Zeige die Anzahl der Wiederholungen jeder Zeile nebeneinander an.

  • -doder--repeated Nur Zeilen und Spalten anzeigen, die mehrmals auftreten.

  • -f<Feld>oder--skip-fields=<Feld> Die angegebenen Felder beim Vergleich ignorieren.

  • -s<Zeichenposition>oder--skip-chars=<Zeichenposition> Die angegebenen Zeichen beim Vergleich ignorieren.

  • -uoder--unique Nur Zeilen und Spalten anzeigen, die nur einmal auftreten.

  • -w<Zeichenposition>oder--check-chars=<Zeichenposition> Bestimmt die zu vergleichenden Zeichen.

  • --help Zeigt die Hilfe an.

  • --version Zeigt Versionsinformationen an.

  • [Eingabedatei] Bestimmt die bereits sortierte Textdatei. Wenn diese Option nicht angegeben wird, werden Daten aus der Standardeingabe gelesen;

  • [输出文件]  指定输出的文件。如果不指定此选项,则将内容显示到标准输出设备(显示终端)。

在线示例

文件testfile中第 2、3、5、6、7、9行为相同的行,使用 uniq 命令删除重复的行,可使用以下命令:

uniq testfile

testfile中的原有内容为:

$ cat testfile      #原有内容  
test 30  
test 30  
test 30  
Hello 95  
Hello 95  
Hello 95  
Hello 95  
Linux 85  
Linux 85

使用uniq 命令删除重复的行后,有如下输出结果:

$ uniq testfile     #删除重复行后的内容  
test 30  
Hello 95  
Linux 85

检查文件并删除文件中重复出现的行,并在行首显示该行重复出现的次数。使用如下命令:

uniq -c testfile

结果输出如下:

$ uniq -c testfile      #删除重复行后的内容  
3 test 30             #前面的数字的意义为该行共出现了3次  
4 Hello 95            #前面的数字的意义为该行共出现了4次  
2 Linux 85            #前面的数字的意义为该行共出现了2次

当重复的行并不相邻时,uniq 命令是不起作用的,即若文件内容为以下时,uniq 命令不起作用:

$ cat testfile1      # 原有内容 
test 30  
Hello 95  
Linux 85 
test 30  
Hello 95  
Linux 85 
test 30  
Hello 95  
Linux 85

这时我们就可以使用 sort:

$ sort  testfile1 | uniq
Hello 95  
Linux 85 
test 30

统计各行在文件中出现的次数:

$ sort testfile1 | uniq -c
   3 Hello 95  
   3 Linux 85 
   3 test 30

在文件中找出重复的行:

$ sort testfile1 | uniq -d
Hello 95  
Linux 85 
test 30

Linux 命令大全