在bash中如何将下一行回显到文件中?

时间:2016-04-26 07:58:30

标签: bash

我尝试检索文件的第1列结果,并将此列放在名为 results2 的文件中,但问题是我的脚本只写 结果的最后

for line in $(cat results | cut -d" " -f1);
do echo -e "$line">results2;
done

1 个答案:

答案 0 :(得分:3)

您可以在shell中执行您想要的操作:

while read -r col1 rest
do 
    printf '%s\n' "$col1"
done < results > results2

......但是这样做更有意义:

cut -d' ' -f1 results > results2

您的脚本存在的问题是您在循环中使用>,它会截断文件并重新打开它以写入每次迭代。您可以通过将整个循环重定向到文件来解决这个问题,但正如我所示,最好的方法是重定向cut的输出。

要读取shell中的行,请使用while read循环; don't read lines with for。但是,请记住,shell不是为高效执行此任务而设计的,而这正是cut等标准工具的用途。