Ich muss die Lease-IP "192.168.21.100", Hardware-Ethernet "14: 10: 9f: f2: 1d: 00" und Client-Host-Name "2015cmoran-2" extrahieren .Awk Unix macht mehrere Zeilen in eins und extrahiert Wörter
und es muss wie diese
"192.168.21.100" in einer Linie sein "14: 10: 9f: f2: 1D: 00", "2015cmoran-2"
lease 192.168.21.100 {
starts 4 2017/03/02 05:43:15;
ends 4 2017/03/02 17:43:15;
cltt 4 2017/03/02 05:43:15;
binding state active;
next binding state free;
rewind binding state free;
hardware ethernet 14:10:9f:f2:1d:00;
uid "\001\024\020\237\362\035\000";
client-hostname "2015cmoran-2";
}
server-duid "\000\001\000\001 IL\264x\243Q\031O\032";
ich habe diese getan, aber ich glaube nicht, das ist der richtige Weg ist es
die Linien diesecat /var/dhcpd.leases | sed 's/;//g' | sed 's/"//g' | awk '{for (I=1;I<=NF;++I) if ($I == "client-hostname") {print $2};}'
cat /var/dhcpd.leases | sed 's/;//g' | sed 's/"//g' | awk '{for (I=1;I<=NF;++I) if ($I == "ethernet") {print $3};}'
Die Katze | sed' und 'sed | awk "sind beide Varianten des gemeinsamen Antipatterns [nutzloser Gebrauch von' Katze'] (http://www.iki.fi/era/unix/award.html). Sie sollten null Vorkommen von 'cat' benötigen, es sei denn, Sie verketten mehrere Eingabedateien und selten mehr als eine von' grep', 'sed' oder Awk in derselben Pipeline. – tripleee
'cat /var/dhcpd.leases | sed 's /; // g' | sed 's/"// g'' kann als' sed 's/[;"] // g'/var/dhcpd.leases 'geschrieben werden –