2017-12-06 3 views
1

Wenn ich einen Befehl in openwrt eintippe, ist das Ergebnis wie folgt.Kann ich den Wert mit dem Bourne Shell-Skript ermitteln?

Security Signal(%)  Mode 
WPA2  86   on 
WPA2  42   on 

In diesem Ergebnis möchte ich den Signalwert (86) in der ersten Spalte abfangen. Wie kann ich den Wert mit Bourne Shell Script erfassen?

Plus, luci.sys.call Funktion wird nur in cbi-Datei zur Herstellung von Luci verwendet, nicht wahr?

Antwort

1

sollte Folgendes tun:

HereYourCommand | head -2 | tail -1 | tr -s ' ' | cut -d' ' -f2 

zu openwrt ersetzen HereYourCommand mit Ihrem Anruf.


Die Erklärung:

  • head -2: nur die ersten beiden Zeilen abholen.
  • tail -1: Von diesen zwei Zeilen die letzte Zeile abholen.
  • tr -s ' ': mehrere Leerzeichen durch ein einzelnes ersetzen.
  • cut -d' ' -f2: nehmen Sie das zweite Feld von der verbleibenden Zeile auf.
+0

Was Verrohrung mit Schwanz +2, stattdessen, dass alle – crook

+0

@crook 'tail -n + 2' nimmt zwei Linien von dem Ausgang, der Weiterverarbeitung wird noch benötigt, oder? –

+0

Warten Sie, bis ich eine Antwort posten werde. Ob es funktioniert oder nicht – crook

2

auch

HereYourCommand | awk 'NR==2 { print $2 }' 

Das awk Programm druckt das zweite Feld (aka Spalte) des zweiten Datensatzes Versuchen (aka Linie).

1
cat test|tail +2|tr -s '\s\t' ' '|cut -d' ' -f2 

tail +2 überspringt erste Zeile, dann habe ich Leerzeichen oder Tabs mit Leerzeichen am ersetzen und schneide zweites Feld bekommen.
output:

4 
5 
8 

input:

x y z 
1 4 7 
2 5 7 
4 8 0 
Verwandte Themen