Ich habe einfach ansible Spiel, das shell:
Befehl auf dem entfernten Rechner läuft, die so etwas wie dieseBash Capture alle Zahlen in Folge
ok: [proxmox] => {
"CONTAINER_INFO": {
"changed": true,
"cmd": "pct list | grep -w test",
"delta": "0:00:00.463029",
"end": "2017-10-13 22:21:22.428399",
"failed": false,
"rc": 0,
"start": "2017-10-13 22:21:21.965370",
"stderr": "",
"stderr_lines": [],
"stdout": "100 stopped test ",
"stdout_lines": [
"100 stopped test "
]
}
}
Die einzigen nützlichen Informationen Ich brauche Rückkehr ist die Nummer auf den stdout
in diesem Fall 100
.
Gibt es eine Möglichkeit, dies herauszufiltern wie
grep
Befehl, der nur100
zurückgibt?
Bisher Beste, was ich habe, ist dies:
ok: [proxmox] => {
"CONTAINER_INFO": {
"changed": true,
"cmd": "pct list | grep -w test | grep -Eo [[:digit:]]",
"delta": "0:00:00.477083",
"end": "2017-10-13 22:26:03.258617",
"failed": false,
"rc": 0,
"start": "2017-10-13 22:26:02.781534",
"stderr": "",
"stderr_lines": [],
"stdout": "1\n0\n0",
"stdout_lines": [
"1",
"0",
"0"
]
}
}
Reines Bash
[email protected]:~# pct list | grep -w "test"
100 stopped test
[email protected]:~# pct list | grep -w "test2"
101 running test2
Liste hilft mir nicht wirklich in diesem Fall.
Jede Hilfe wird geschätzt und danke im Voraus.
Dies ist eine generische Bash-Antwort. Während es in Ansible funktionieren würde, denke ich, Filter sind eine bessere Option. –
OP erwähnt keine mögliche Version. Filter funktionieren erst ab Version 2.2. Also, ja, meine Lösung ist generisch. Und nein, es ist keine Bash, es funktioniert auf jeder Shell. –
Die Ausgabe, die ich bekomme, ist dieser '100 gestoppte Test' zum Beispiel, wenn ich versuche, dies mit einer der obigen Methoden zu filtern; Ich bekomme 'Syntaxfehler bei -e Zeile 1, nahe \ "+) für Perl und' Syntaxfehler bei oder nahe ['für awk. Aus irgendeinem Grund kann ich nicht entkommen oder ich mache etwas falsch. –