如何移除ssh-rsa与mail:之间的所有空格?
移除SSH公钥中ssh-rsa与mail:之间的空格
方法1:适配任意密钥段的通用写法
用sed匹配目标区间,结合tr删除空格,不管中间有多少段密钥内容都能生效:
echo 'ssh-rsa aaaaaaaaaaa bbbbbbbbbbbbb cccccccccccccc ddddddddddddddddd eeeeeeeeeeeeeeee mail: email@email.com' | sed -E 's/(ssh-rsa )(.*)( mail:.*)/\1'"$(echo '\2' | tr -d ' ')"'\3/'
方法2:针对固定段数的精准写法
如果确定中间密钥段数量固定(比如示例中的5段),可以直接通过sed拼接各段内容:
echo 'ssh-rsa aaaaaaaaaaa bbbbbbbbbbbbb cccccccccccccc ddddddddddddddddd eeeeeeeeeeeeeeee mail: email@email.com' | sed -E 's/(ssh-rsa )([^ ]+) ([^ ]+) ([^ ]+) ([^ ]+) ([^ ]+)( mail:.*)/\1\2\3\4\5\6\7/'
最终效果
执行上述命令后,会得到目标结果:
ssh-rsa aaaaaaaaaaabbbbbbbbbbbbbccccccccccccccdddddddddddddddddeeeeeeeeeeeeeeee mail: email@email.com
内容的提问来源于stack exchange,提问作者anis
相关产品推荐
相关产品推荐

