所有的數字我有一個在遠程機器上運行shell:
命令,該命令返回類似這樣擊捕捉順序
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 "
]
}
}
我唯一需要的有用的信息,在這種情況下對stdout
數量簡單Ansible戲100
。
有沒有辦法將此過濾出來,如
grep
命令,它將僅返回100
?
到目前爲止最好的我是這樣的:
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"
]
}
}
純猛砸
[email protected]:~# pct list | grep -w "test"
100 stopped test
[email protected]:~# pct list | grep -w "test2"
101 running test2
名單並沒有真正幫助我在這種情況下。
任何幫助表示感謝,並提前感謝。
這是一個通用的bash答案。雖然它可以在Ansible中工作,但我認爲過濾器是更好的選擇。 –
OP沒有提到有效的版本。過濾器僅從版本2.2開始工作。所以,是的,我的解決方案是通用的。不,它不是bash,它適用於任何外殼。 –
我得到的輸出就是這個'100停止測試'的例子,所以當我嘗試用上述任何一種方法進行過濾時,我在-e第1行附近得到'語法錯誤,在\「+附近)perl和'語法錯誤在或接近['for awk。由於某種原因,我無法逃脫或者我做錯了某些事情 –