如何使用 bash 交换一行中的单词位置?
How to swap words position in a line using 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 '%s\n' "$toserver" | sed s'/\([^.]*\.[^ ]*\) \([^ ]*\) \(.*\)/ /')
$ echo "$fromserver"
scp -q -i ssh_key1.pem ec2-user@ec2-18-205-233-131.compute-1.amazonaws.com:/home/ec2-user/outfile outfile
我有一个命令保存在字符串中。
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 '%s\n' "$toserver" | sed s'/\([^.]*\.[^ ]*\) \([^ ]*\) \(.*\)/ /')
$ echo "$fromserver"
scp -q -i ssh_key1.pem ec2-user@ec2-18-205-233-131.compute-1.amazonaws.com:/home/ec2-user/outfile outfile