cp 使用 awked 行
var=$(pwd);diff -x .DS* -r aa bb | cut -f3,4 -d' '| sed 's/\://' | awk -v "var=$var" 'BEGIN{OFS="/"} {split($2,a,"-"); a[1]=toupper(a[1]) if ($1 ~/^bb/) {print var, $1, $2 " " var, "aa"}
else {print var, $1, $2 " " var, "bb"}}' | cp -r $(cut -f1 -d" ") $(cut -f2 -d" ")
这会比较两个目录并返回源地址和目标地址以进行复制。预期的结果是两个文件夹最终都包含相同的文件和文件夹。
cp-cut 部分不起作用。手动执行 cp 会产生正确的结果。剪切操作的输出看起来不错。
省略 cp-cut 子句,脚本会生成如下行
/Users/tom/Desktop/aa/AWK/awk-parse-email-add-or.textClipping /Users/tom/Desktop/bb
所以这是原始材料 - 源文件和目标目录 - 将 awk 剪辑复制到文件夹 bb。
有好心人可以建议我哪里出错了吗?
汤姆
var=$(pwd);diff -x .DS* -r aa bb | cut -f3,4 -d' '| sed 's/\://' | awk -v "var=$var" 'BEGIN{OFS="/"} {split($2,a,"-"); a[1]=toupper(a[1]) if ($1 ~/^bb/) {print var, $1, $2 " " var, "aa"}
else {print var, $1, $2 " " var, "bb"}}' | cp -r $(cut -f1 -d" ") $(cut -f2 -d" ")
This compares two directories and returns source and target addresses for copying purposes. The intended result is that both folders end up with the same files and folders inside them.
The cp-cut part doesn't work. Doing the cp manually produces the right result. The cut operations output seems OK.
Leaving off the cp-cut clause, the script produces lines like this
/Users/tom/Desktop/aa/AWK/awk-parse-email-add-or.textClipping /Users/tom/Desktop/bb
So this is the raw material - source file and target directory - to copy the awk clipping to the folder bb.
Could some kind person suggest where I am going wrong ?
Tom
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您正在使用命令替换
$(cut -f1 -d" ")
和$(cut -f2 -d" ")
,但这些命令无效,因为cut
需要输入。尝试使用 xargs 代替。将最后一个管道更改为:
You're using command substitution,
$(cut -f1 -d" ")
and$(cut -f2 -d" ")
, but these commands are not valid becausecut
requires input.Try using xargs instead. Change your last pipe to: