awk系统调用

时间:2013-04-04 23:03:57

标签: bash awk

我想使用awk和system()函数来移动几个目录。

我想要使用awk名称file.cfg处理我要处理的文件,该文件按以下方式组织:

/path1 /path2 
/some_path /some_other_path 
and so on..

每个第一个路径通过空格与第二个路径分开 所以我就是这样做的:

awk '{system(mv -R $1" "$2)}' file.cfg

但它不起作用我得到了

sh: 0/home/my_user/path1: No such file or directory

但是file.cfg看起来像这样:

/home/my_user/path1 /home/my_user/path2

并且/home之前没有0。那我在这里错过了什么?

2 个答案:

答案 0 :(得分:21)

您必须引用您提供给system的命令:

awk '{system("mv -R " $1 " " $2)}' file.cfg

当前mv -R被解释为变量mv的值减去R的值,即0,因为两者都没有定义。

答案 1 :(得分:5)

为什么不使用xargs?

cat file.cfg | xargs -n 2 mv

这会将你的文件中的标记(用空格分隔)传递给mv,每组两个。