添加列并保存文件

添加列并保存文件

如何添加列并覆盖 .csv 表

命令:

$ paste -d ' ' 1.csv <(cut -d ' ' -f1 status.csv)

$ cat 1.csv
1  2
2  5

$ cat status.csv
true
false

如果我使用> 1.csv- 删除文件 1.csv 中的所有列并仅保存文件 status.csv 中的第一列,我想将文件 status.csv 中的第一列添加到文件 1.csv 并使用来自文件 status.csv 的新列保存文件 1.csv?

答案1

最接近的方法可能是使用软件包sponge中的实用程序moreutils

DESCRIPTION
       sponge reads standard input and writes it out to the specified file.
       Unlike a shell redirect, sponge soaks up all its input before writing
       the output file. This allows constructing pipelines that read from and
       write to the same file.

所以

paste -d ' ' 1.csv status.csv | sponge 1.csv

如果你是继上一个问题之后再问这个问题逐行比较两个表status.csv,那么你可以通过以下方式消除中间文件

paste 1.csv 2.csv | awk '{print $1, $2, $2 == $4 ? "true" : "false"}' | sponge 1.csv

答案2

您可以使用种类,带有 如下unique标志:

paste -d ' ' 1.csv <(cut -d ' ' -f1 status.csv) | sort -uo 1.csv

-u, --unique
    with -c, check for strict ordering; without -c, output only  the
    first of an equal run

-o, --output=FILE
    write result to FILE instead of standard output

相关内容