Bash
Bash - 拆分前面的命令參數
如何在 bash 中解析前一個命令?
例子:
root$ ssh foo@1.2.3.4 root$ echo !$ &>/tmp/foo.txt root$ cat /tmp/foo.txt foo@1.2.3.4
目標:
僅將 ipaddress 發送
1.2.3.4
到 foo.txt我嘗試使用awk,但沒有成功
#doesn't work cat /tmp/foo.txt |awk '{print $2,$3,$4}'
我還嘗試使用 sed 僅解析數字
#doesn't work sed 's/.//p' /tmp/foo.txt sed 's/[0-9]//p' /tmp/foo.txt
注意事項
1.2.3.4 始終是介於 0.0.0.0 和 255.255.255.255 之間的數字
使用者名
foo
可以是任意長度foo@1.2.3.4不一定是傳遞給 ssh 的唯一參數(例如 ssh 1.2.3.4 -l foo)
資源
進一步
說明 最終目標是在我的 .bashrc 中創建一個函式,讓我可以輕鬆刪除衝突的 ssh 密鑰。
root$ ssh foo@1.2.3.4 #some big error message warning about man in the middle attack root$ ssh-keygen -R 1.2.3.4
使用您的原始語法:
$ cat /tmp/foo.txt | awk -F@ '{print $2}'
1.2.3.4
如果您可以為 ssh 命令使用另一種語法,它會變得更容易:
ssh -l foo 1.2.3.4 echo !:3
但這需要這種精確的語法。