GNU/Linux >> LINUX-Kenntnisse >  >> Linux

12 nützliche Befehle zum Filtern von Text für effektive Dateioperationen in Linux

In diesem Artikel werden wir eine Reihe von Befehlszeilentools untersuchen, die unter Linux als Filter fungieren. Ein Filter ist ein Programm, das die Standardeingabe liest, eine Operation darauf ausführt und die Ergebnisse auf die Standardausgabe schreibt.

Aus diesem Grund kann es verwendet werden, um Informationen auf leistungsstarke Weise zu verarbeiten, wie z. B. die Umstrukturierung der Ausgabe, um nützliche Berichte zu erstellen, das Ändern von Text in Dateien und viele andere Systemverwaltungsaufgaben.

Vor diesem Hintergrund finden Sie unten einige der nützlichen Datei- oder Textfilter in Linux.

1. Awk-Befehl

Ach ist eine bemerkenswerte Sprache zum Scannen und Verarbeiten von Mustern, mit der nützliche Filter in Linux erstellt werden können. Sie können damit beginnen, indem Sie unsere Awk-Serie Teil 1 bis Teil 13 durchlesen.

Lesen Sie zusätzlich auch das awk durch Manpage für weitere Informationen und Verwendungsoptionen:

$ man awk

2. Sed-Befehl

gesendet ist ein leistungsstarker Stream-Editor zum Filtern und Transformieren von Text. Wir haben bereits zwei nützliche Artikel über sed geschrieben, die Sie hier durchgehen können:

  1. Verwenden des GNU-Befehls „sed“ zum Erstellen, Bearbeiten und Manipulieren von Dateien unter Linux
  2. 15 nützliche „sed“-Befehlstipps und -tricks für tägliche Linux-Systemadministrationsaufgaben

Die Manpage sed hat Kontrolloptionen und Anweisungen hinzugefügt:

$ man sed

3. Grep-, Egrep-, Fgrep-, Rgrep-Befehle

Diese Filter geben Linien aus, die einem gegebenen Muster entsprechen. Sie lesen Zeilen aus einer Datei oder Standardeingabe und geben standardmäßig alle übereinstimmenden Zeilen auf der Standardausgabe aus.

Hinweis :Das Hauptprogramm ist grep, die Variationen sind einfach die gleichen wie bei der Verwendung spezifischer grep-Optionen wie unten (und sie werden immer noch aus Gründen der Abwärtskompatibilität verwendet):

$ egrep = grep -E
$ fgrep = grep -F
$ rgrep = grep -r  

Unten sind einige grundlegende grep-Befehle:

[email protected] ~ $ grep "aaronkilik" /etc/passwd
aaronkilik:x:1001:1001::/home/aaronkilik:

[email protected] ~ $ cat /etc/passwd | grep "aronkilik"
aaronkilik:x:1001:1001::/home/aaronkilik:

Sie können mehr über den Unterschied zwischen Grep, Egrep und Fgrep in Linux lesen?.

4. Kopfbefehl

Kopf wird verwendet, um die ersten Teile einer Datei anzuzeigen, es gibt die ersten 10 aus Linien standardmäßig. Sie können das -n verwenden num-Flag, um die Anzahl der anzuzeigenden Zeilen anzugeben:

[email protected] ~ $ head /var/log/auth.log  
Jan  2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan  2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session closed for user root
Jan  2 10:51:34 TecMint sudo:  tecmint : TTY=unknown ; PWD=/home/tecmint ; USER=root ; COMMAND=/usr/lib/linuxmint/mintUpdate/checkAPT.py
Jan  2 10:51:34 TecMint sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
Jan  2 10:51:39 TecMint sudo: pam_unix(sudo:session): session closed for user root
Jan  2 10:55:01 TecMint CRON[4099]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan  2 10:55:01 TecMint CRON[4099]: pam_unix(cron:session): session closed for user root
Jan  2 11:05:01 TecMint CRON[4138]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan  2 11:05:01 TecMint CRON[4138]: pam_unix(cron:session): session closed for user root
Jan  2 11:09:01 TecMint CRON[4146]: pam_unix(cron:session): session opened for user root by (uid=0)

[email protected] ~ $ head  -n 5 /var/log/auth.log  
Jan  2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan  2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session closed for user root
Jan  2 10:51:34 TecMint sudo:  tecmint : TTY=unknown ; PWD=/home/tecmint ; USER=root ; COMMAND=/usr/lib/linuxmint/mintUpdate/checkAPT.py
Jan  2 10:51:34 TecMint sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
Jan  2 10:51:39 TecMint sudo: pam_unix(sudo:session): session closed for user root

Erfahren Sie, wie Sie den Head-Befehl mit den Tail- und Cat-Befehlen für eine effektive Nutzung unter Linux verwenden.

5. tail-Befehl

Schwanz gibt die letzten Teile aus (10 Zeilen standardmäßig) einer Datei. Verwenden Sie das -n num-Schalter, um die Anzahl der anzuzeigenden Zeilen anzugeben.

Der folgende Befehl gibt die letzten 5 aus Zeilen der angegebenen Datei:

[email protected] ~ $ tail -n 5 /var/log/auth.log
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.

Zusätzlich Schwanz hat eine spezielle Option -f zum Beobachten von Änderungen in einer Datei in Echtzeit (insbesondere Protokolldateien).

Mit dem folgenden Befehl können Sie Änderungen in der angegebenen Datei überwachen:

[email protected] ~ $ tail -f /var/log/auth.log
Jan  6 12:58:01 TecMint sshd[1269]: Server listening on :: port 22.
Jan  6 12:58:11 TecMint sshd[1269]: Received SIGHUP; restarting.
Jan  6 12:58:12 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
Jan  6 12:58:12 TecMint sshd[1269]: Server listening on :: port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.

Lesen Sie den Schwanz durch man-Seite für eine vollständige Liste der Verwendungsoptionen und Anweisungen:

$ man tail

6. Sortierbefehl

sortieren wird verwendet, um Zeilen einer Textdatei oder von der Standardeingabe zu sortieren.

Unten sehen Sie den Inhalt einer Datei namens domains.list :

[email protected] ~ $ cat domains.list
tecmint.com
tecmint.com
news.tecmint.com
news.tecmint.com
linuxsay.com
linuxsay.com
windowsmint.com
windowsmint.com

Sie können einen einfachen Sortierbefehl ausführen, um den Dateiinhalt wie folgt zu sortieren:

[email protected] ~ $ sort domains.list
linuxsay.com
linuxsay.com
news.tecmint.com
news.tecmint.com
tecmint.com
tecmint.com
windowsmint.com
windowsmint.com

Sie können sortieren verwenden Befehl in vielerlei Hinsicht verwenden, gehen Sie einige der nützlichen Artikel zum Sortierbefehl wie folgt durch:

  1. 14 Nützliche Beispiele für den Linux-Befehl „sort“ – Teil 1
  2. 7 interessante Linux-„sort“-Befehlsbeispiele – Teil 2
  3. Suchen und Sortieren von Dateien nach Datum und Uhrzeit der Änderung
  4. So sortieren Sie die Ausgabe des Befehls „ls“ nach Datum und Uhrzeit der letzten Änderung

7. uniq-Befehl

einzigartig Der Befehl wird verwendet, um wiederholte Zeilen zu melden oder wegzulassen, er filtert Zeilen aus der Standardeingabe und schreibt das Ergebnis in die Standardausgabe.

Nach dem Ausführen von sort Bei einem Eingabestream können Sie wiederholte Zeilen mit uniq entfernen wie im Beispiel unten.

Um die Anzahl der Vorkommen einer Zeile anzugeben, verwenden Sie -c Option und ignorieren Sie Groß- und Kleinschreibung beim Vergleichen, indem Sie das -i einfügen Möglichkeit:

[email protected] ~ $ cat domains.list
tecmint.com
tecmint.com
news.tecmint.com
news.tecmint.com
linuxsay.com
linuxsay.com
windowsmint.com

[email protected] ~ $ sort domains.list | uniq -c 
2 linuxsay.com
2 news.tecmint.com
2 tecmint.com
1 windowsmint.com 

Lesen Sie das uniq durch Manpage für weitere Nutzungsinformationen und Flags:

$ man uniq

8. fmt-Befehl

fmt Einfacher optimaler Textformatierer, er formatiert Absätze in der angegebenen Datei neu und gibt die Ergebnisse auf der Standardausgabe aus.

Das Folgende ist der aus der Datei domain-list.txt extrahierte Inhalt :

1.tecmint.com 2.news.tecmint.com 3.linuxsay.com 4.windowsmint.com

Um den obigen Inhalt in eine Standardliste umzuformatieren, führen Sie den folgenden Befehl mit -w aus Schalter wird verwendet, um die maximale Linienbreite zu definieren:

tecmint[email protected] ~ $ cat domain-list.txt 
1.tecmint.com 2.news.tecmint.com 3.linuxsay.com 4.windowsmint.com

[email protected] ~ $ fmt -w 1 domain-list.txt
1.tecmint.com 
2.news.tecmint.com 
3.linuxsay.com 
4.windowsmint.com

9. pr-Befehl

pr Der Befehl konvertiert Textdateien oder die Standardeingabe zum Drucken. Zum Beispiel auf Debian Systemen können Sie alle installierten Pakete wie folgt auflisten:

$ dpkg -l

Um die Liste in druckbereiten Seiten und Spalten zu organisieren, geben Sie den folgenden Befehl ein.

[email protected] ~ $ dpkg -l | pr --columns 3 -l 20  

2017-01-06 13:19                                                  Page 1


Desired=Unknown/Install ii  adduser		ii  apg
| Status=Not/Inst/Conf- ii  adwaita-icon-theme	ii  app-install-data
|/ Err?=(none)/Reinst-r ii  adwaita-icon-theme- ii  apparmor
||/ Name		ii  alsa-base		ii  apt
+++-=================== ii  alsa-utils		ii  apt-clone
ii  accountsservice	ii  anacron		ii  apt-transport-https
ii  acl			ii  apache2		ii  apt-utils
ii  acpi-support	ii  apache2-bin		ii  apt-xapian-index
ii  acpid		ii  apache2-data	ii  aptdaemon
ii  add-apt-key		ii  apache2-utils	ii  aptdaemon-data


2017-01-06 13:19                                                  Page 2


ii  aptitude		ii  avahi-daemon	ii  bind9-host
ii  aptitude-common	ii  avahi-utils		ii  binfmt-support
ii  apturl		ii  aview		ii  binutils
ii  apturl-common	ii  banshee		ii  bison
ii  archdetect-deb	ii  baobab		ii  blt
ii  aspell		ii  base-files		ii  blueberry
ii  aspell-en		ii  base-passwd		ii  bluetooth
ii  at-spi2-core	ii  bash		ii  bluez
ii  attr		ii  bash-completion	ii  bluez-cups
ii  avahi-autoipd	ii  bc			ii  bluez-obexd

.....

Die hier verwendeten Flags sind:

  1. --column definiert die Anzahl der in der Ausgabe erstellten Spalten.
  2. -l gibt die Seitenlänge an (Standard ist 66 Zeilen).

10. tr-Befehl

Dieses Tool übersetzt oder löscht Zeichen aus der Standardeingabe und schreibt die Ergebnisse in die Standardausgabe.

Die Syntax für die Verwendung von tr lautet wie folgt:

$ tr options set1 set2

Sehen Sie sich die Beispiele unten im ersten Befehl an, set1( [:upper:] ) stellt die Groß-/Kleinschreibung der eingegebenen Zeichen dar (alles Großbuchstaben).

Dann set2([:lower:]) stellt den Fall dar, in dem die resultierenden Zeichen sein werden. Dasselbe gilt für das zweite Beispiel und die Escape-Sequenz \n bedeutet Druckausgabe in einer neuen Zeile:

[email protected] ~ $ echo "WWW.TECMINT.COM" | tr [:upper:] [:lower:]
www.tecmint.com

[email protected] ~ $ echo "news.tecmint.com" | tr [:lower:] [:upper:]
NEWS.TECMINT.COM

11. mehr Befehl

mehr Der Befehl ist ein nützlicher Filter zum Durchsehen von Dateien, der hauptsächlich für die Anzeige von Zertifikaten erstellt wurde. Es zeigt Dateiinhalte in einem seitenähnlichen Format, wo Benutzer [Enter] drücken können um weitere Informationen anzuzeigen.

Sie können es verwenden, um große Dateien wie folgt anzuzeigen:

[email protected] ~ $ dmesg | more
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 4.4.0-21-generic ([email protected]) (gcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2) ) #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 (Ubuntu 4.4.0-21.37-generic
 4.4.6)
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-21-generic root=UUID=bb29dda3-bdaa-4b39-86cf-4a6dc9634a1b ro quiet splash vt.handoff=7
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000]   AMD AuthenticAMD
[    0.000000]   Centaur CentaurHauls
[    0.000000] x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256
[    0.000000] x86/fpu: Supporting XSAVE feature 0x01: 'x87 floating point registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x02: 'SSE registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x04: 'AVX registers'
[    0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'standard' format.
[    0.000000] x86/fpu: Using 'eager' FPU context switches.
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009d3ff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009d400-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000a56affff] usable
[    0.000000] BIOS-e820: [mem 0x00000000a56b0000-0x00000000a5eaffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000a5eb0000-0x00000000aaabefff] usable
--More--

12. weniger Befehl

weniger ist das Gegenteil von mehr Befehl oben, aber es bietet zusätzliche Funktionen und ist bei großen Dateien etwas schneller.

Verwenden Sie es genauso wie more:

[email protected] ~ $ dmesg | less
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 4.4.0-21-generic ([email protected]) (gcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2) ) #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 (Ubuntu 4.4.0-21.37-generic
 4.4.6)
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-21-generic root=UUID=bb29dda3-bdaa-4b39-86cf-4a6dc9634a1b ro quiet splash vt.handoff=7
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000]   AMD AuthenticAMD
[    0.000000]   Centaur CentaurHauls
[    0.000000] x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256
[    0.000000] x86/fpu: Supporting XSAVE feature 0x01: 'x87 floating point registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x02: 'SSE registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x04: 'AVX registers'
[    0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'standard' format.
[    0.000000] x86/fpu: Using 'eager' FPU context switches.
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009d3ff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009d400-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000a56affff] usable
[    0.000000] BIOS-e820: [mem 0x00000000a56b0000-0x00000000a5eaffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000a5eb0000-0x00000000aaabefff] usable
:

Erfahren Sie, warum „weniger“ schneller als „mehr“ ist Befehl für eine effektive Dateinavigation in Linux.

Das war's fürs Erste, teilen Sie uns über den Kommentarbereich unten alle nützlichen Befehlszeilentools mit, die hier nicht erwähnt werden und die als Textfilter in Linux fungieren.


Linux
  1. 8 Linux-Befehle für effektives Prozessmanagement

  2. 10 Linux-Befehle für die Netzwerkdiagnose

  3. 3 unverzichtbare Linux-Befehle zur Textbearbeitung

  4. 3 Nützliche Linux-Befehle für Systemadministratoren

  5. Kann der Linux-Cat-Befehl zum Schreiben von Text in eine Datei verwendet werden?

40 nützliche Git-Befehle für Linux-Administratoren und -Entwickler

Die 50 nützlichsten Zypper-Befehle für SUSE Linux-Benutzer

Die 50 nützlichen Linux-IP-Befehle für Netzwerkadministratoren

14 grundlegende Tar-Befehle in Linux mit Beispielen für Neulinge

4 Stat-Befehle in Linux mit Beispiel für Anfänger

Praktische Linux- und Unix-Tee-Befehle für den Linux-Administrator