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

Wie kann man mit cut mehr Leerzeichen für das Trennzeichen angeben?

Eigentlich awk ist genau das Tool, das Sie sich ansehen sollten:

ps axu | grep '[j]boss' | awk '{print $5}'

oder Sie können die grep fallen lassen insgesamt seit awk kennt sich mit regulären Ausdrücken aus:

ps axu | awk '/[j]boss/ {print $5}'

Aber wenn Sie aus irgendeinem bizarren Grund wirklich nicht können Verwenden Sie awk , gibt es andere einfachere Dinge, die Sie tun können, wie z. B. zunächst alle Leerzeichen auf ein einziges Leerzeichen reduzieren:

ps axu | grep '[j]boss' | sed 's/\s\s*/ /g' | cut -d' ' -f5

Diese grep Trick ist übrigens ein netter Weg, um nur den jboss zu bekommen Prozesse und nicht die grep jboss eins (dito für awk Variante).

Die grep Der Prozess hat einen wörtlichen grep [j]boss in seinem Verarbeitungsbefehl wird also nicht von grep abgefangen selbst, die nach der Zeichenklasse [j] sucht gefolgt von boss .

Dies ist ein raffinierter Weg, um | grep xyz | grep -v grep zu vermeiden Paradigma, das einige Leute verwenden.


awk Version ist wahrscheinlich der beste Weg, aber Sie können auch cut verwenden wenn Sie zuerst die Wiederholungen mit tr drücken :

ps axu | grep jbos[s] | tr -s ' ' | cut -d' ' -f5
#        ^^^^^^^^^^^^   ^^^^^^^^^   ^^^^^^^^^^^^^
#              |            |             |
#              |            |       get 5th field
#              |            |
#              |        squeeze spaces
#              |
#        avoid grep itself to appear in the list

Ich verwende dafür gerne den Befehl tr -s

 ps aux | tr -s [:blank:] | cut -d' ' -f3

Dadurch werden alle Leerzeichen auf 1 Leerzeichen komprimiert. Auf diese Weise wird die Anweisung an cut, ein Leerzeichen als Trennzeichen zu verwenden, wie erwartet berücksichtigt.


Linux
  1. So verwenden Sie den Linux-Grep-Befehl

  2. Wie entferne ich ein Wortpräfix mit grep?

  3. Wie benenne ich Dateien mit Leerzeichen mit der Linux-Shell um?

  4. So beschränken Sie den Internetzugang für einen bestimmten Benutzer im LAN mit iptables in Linux

  5. Wie wird der Hostname für den laufenden Container angegeben?

Tipps zur Verwendung des Top-Befehls unter Linux

Wie man nach mehreren Zeichenfolgen, Mustern oder Wörtern sucht

So führen Sie Ubuntu mit dem Windows-Subsystem für Linux aus

Wie entferne ich Leerzeichen in Pfaden für Scp in Linux?

So löschen Sie ausgewählten Text im vi-Editor

Wie man in einem Bash-Skript nach Unicode sucht