0

我正在阅读格式的小 csv 文件size,name- 每行一组。对于我的测试文件,我在 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文件中。

我究竟做错了什么?!

4

1 回答 1

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
于 2014-05-28T10:53:59.580 回答