【问题标题】:Problems Writing Output to File将输出写入文件时出现问题
【发布时间】:2014-05-28 10:50:52
【问题描述】:

我正在阅读格式为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 文件中。

我做错了什么?!

【问题讨论】:

    标签: file unix while-loop ifs


    【解决方案1】:

    您正在使用&gt;,因此文件每次都会被截断。相反,使用&gt;&gt; 附加:

    所以应该是这样的:

            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
    

    【讨论】:

    • 谢谢,我为此感到愚蠢。虽然它并不那么简单,所以我不得不添加rm 命令来清除目录,因为它可以工作。
    • 很高兴阅读!不要因为错误而责备您,这很常见,并且发生在我们中最好的人身上:)
    猜你喜欢
    • 2016-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多