如何使用bash交换一行中的单词位置?



我有一个字符串格式的命令。

toserver="scp -q -i ssh_key1.pem outfile ec2-user@ec2-18-205-233-131.compute-1.amazonaws.com:/home/ec2-user/outfile"

并且,从上面我想要交换文件位置并创建新的变量。我的意思是,就像下面。

fromserver="scp -q -i ssh_key1.pem ec2-user@ec2-18-205-233-131.compute-1.amazonaws.com:/home/ec2-user/outfile outfile"

输出文件名不会改变,但服务器地址可能会改变。请建议怎么做。

使用sed

$ fromserver=$(printf '%sn' "$toserver" | sed s'/([^.]*.[^ ]*) ([^ ]*) (.*)/1 3 2/')
$ echo "$fromserver"
scp -q -i ssh_key1.pem ec2-user@ec2-18-205-233-131.compute-1.amazonaws.com:/home/ec2-user/outfile outfile

最新更新