Was bedeutet sed 's/5//g' in dieser Befehlszeile?

Was bedeutet sed 's/5//g' in dieser Befehlszeile?

Hier ist die Ausgabe von df -h.

[root@ip-10-0-7-225 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      8.0G  1.5G  6.6G  18% /
devtmpfs        478M     0  478M   0% /dev
tmpfs           496M     0  496M   0% /dev/shm
tmpfs           496M   13M  484M   3% /run
tmpfs           496M     0  496M   0% /sys/fs/cgroup
tmpfs           100M     0  100M   0% /run/user/1000

Beim Ausführen des folgenden Befehls wurde 18 % angezeigt.

[root@ip-10-0-7-225 ~]# df / | grep / | awk '{ print $5}'| sed 's/5//g'

18 %

Der Punkt ist, wenn ich den sed-Teil „s/5//g“ ändere, kommt immer noch ein Ergebnis von 18 % heraus. Wie ist das?

Antwort1

sed 's/5//g'bedeutet hier sehr wahrscheinlich, dass eine Person, die diese gesamte Befehlszeile eingegeben hat, beabsichtigt hat, das Prozentzeichen aus der Ausgabe zu entfernen, aber das übersehen hat Shiftund 5stattdessen erhalten hat %.

In seiner aktuellen Form weist es an, aus der Ausgabe sedzu entfernen 5, was keinen Sinn ergibt.

Antwort2

grep – greps für die erste Zeile (enthält /)

awk - druckt die 5. Spalte aus (18%)

sed – ersetzt 5 durch nichts – es hat keine Auswirkung auf den String von oben (18 %), da dieser keine 5 enthält.

verwandte Informationen