Bash - 拆分之前的命令参数

spu*_*der 2 bash command-history sed awk text-processing

如何解析 bash 中的前一个命令?

例子:

root$ ssh foo@1.2.3.4
root$ echo !$ &>/tmp/foo.txt
root$ cat /tmp/foo.txt
foo@1.2.3.4
Run Code Online (Sandbox Code Playgroud)

目标:
仅将 ipaddress 发送 1.2.3.4到 foo.txt


我尝试使用 awk,但没有成功

#doesn't work
cat /tmp/foo.txt |awk '{print $2,$3,$4}' 
Run Code Online (Sandbox Code Playgroud)

我还尝试使用 sed 解析出数字

#doesn't work
sed 's/.//p' /tmp/foo.txt 
sed 's/[0-9]//p' /tmp/foo.txt
Run Code Online (Sandbox Code Playgroud)

注意事项
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富)的唯一参数

资源

进一步
说明 最终目标是在我的 .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
Run Code Online (Sandbox Code Playgroud)

Joh*_*ohn 5

使用您的原始语法:
$ cat /tmp/foo.txt | awk -F@ '{print $2}'
1.2.3.4