将输出写入文件的问题

时间:2014-05-28 10:50:53

标签: file unix while-loop ifs

我正在以size,name格式阅读一个小型csv文件 - 每行一组。对于我的测试文件,我在csv文件中有两行。

如果我使用代码

while
        IFS=',' read -r size name
do
        printf "%s\n" "name"
done < temp1.txt

每条线的name值都会打印到终端。

如果我使用代码

while
        IFS=',' read -r size name
do
        printf "%s\n" "name" > temp2.txt
done < temp1.txt

然后只有最后name打印到temp2.txt文件。

我做错了什么?!

1 个答案:

答案 0 :(得分:0)

您正在使用>,因此每次都会截断该文件。相反,请使用>>追加:

所以它应该是这样的:

        printf "%s\n" "name" >> temp2.txt
                             ^^

所有在一起:

while
        IFS=',' read -r size name
do
        printf "%s\n" "name" >> temp2.txt
done < temp1.txt

基本示例:

$ echo "hello" > a
$ echo "bye" > a
$ cat a
bye                        # just last line gets written

$ echo "hello" >> a
$ echo "bye" >> a
$ cat a
hello
bye                        # everything gets written