awk print覆盖字符串

时间:2016-10-06 17:27:25

标签: awk printing overwrite

我在终端中使用awk时遇到问题。 我需要将组中的许多文件从实际目录移动到另一个目录,并在文本文件中列出必要的文件,如下所示:

filename.txt

file1
file2
file3
...

我通常数字:

paste filename.txt | awk '{print "mv "$1" ../dir/"}' | sh

并执行:

mv file1 ../dir/
mv file2 ../dir/
mv file3 ../dir/

它通常有效,但现在命令改变了它的行为并且awk覆盖了第一个字符串../dir/,从初始位置再次开始打印命令,获得:

../dire1 ../dir/
../dire2 ../dir/
../dire3 ../dir/

当然无法执行。 发生了什么? 我该如何解决?

1 个答案:

答案 0 :(得分:2)

您的输入文件包含回车符(\r又名control-M)。在运行UNIX工具之前在其上运行dos2unix

idk你正在使用什么粘贴,但你根本不应该使用awk,这只是一个简单的shell脚本的工作,例如在您对此进行测试后删除echo

$ < file xargs -n 1 -I {} echo mv "{}" "../dir"
mv file1 ../dir
mv file2 ../dir
mv file3 ../dir