我想使用awk和system()函数来移动几个目录.
我有一个文件,我想用awk名称进行处理,file.cfg其组织方式如下:
/path1 /path2
/some_path /some_other_path
and so on..
Run Code Online (Sandbox Code Playgroud)
每个第一条路径都通过空格与第二条路径分开所以这就是我做的方式:
awk '{system(mv -R $1" "$2)}' file.cfg
Run Code Online (Sandbox Code Playgroud)
但它没有用,我得到了
sh: 0/home/my_user/path1: No such file or directory
Run Code Online (Sandbox Code Playgroud)
但file.cfg看起来像这样:
/home/my_user/path1 /home/my_user/path2
Run Code Online (Sandbox Code Playgroud)
之前没有0 /home.那我在这里错过了什么?
Jon*_*oni 21
你必须引用你给出的命令system:
awk '{system("mv -R " $1 " " $2)}' file.cfg
Run Code Online (Sandbox Code Playgroud)
当前mv -R被解释为变量mv的值减去R的值,0因为两者都没有被定义.
小智 5
为什么不直接使用xargs?
cat file.cfg | xargs -n 2 mv
Run Code Online (Sandbox Code Playgroud)
这会将您的文件中的标记(由空格分隔)以两个为一组传递给mv.