如何添加列并覆盖 .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