Linux 命令删除 CSV 的最后一列



如何编写 linux 命令来删除制表符分隔的 csv 的最后一列?

示例输入

AAA BBB CCC DDD
111 222 333 444

预期产出

AAA BBB CCC
111 222 333

删除拳头字段而不是最后一个字段很容易。因此,我们反转内容,删除第一个字段,然后再次对其进行还原。

这是"CSV"的示例

rev file1 | cut -d "," -f 2- | rev

将"file1"和","替换为您的文件名和相应的分隔符。

您可以使用cut。 使用选项-d指定分隔符,然后提供要在输出中使用的字段编号(选项-f(。 输入的每一行都单独处理:

cut -d$'t' -f 1-6 < my.csv > new.csv

这是根据你的话。 您的示例看起来更像是要去除中间的列:

cut -d$'t' -f 1-3,5-7 < my.csv > new.csv

$'t'是包含单个制表符的字符串的bash表示法。

您可以使用以下命令,该命令将删除制表符分隔的csv的最后一列,而不考虑字段编号,

sed -r 's/(.*)s+[^s]+$/1/'

例如:

echo "aaa bbb ccc ddd 111 222 333 444" | sed -r 's/(.*)s+[^s]+$/1/'
cut -d ',' -f 1-3 inpyt.csv > output.csv

其中 -d 后跟一个分隔符,分隔符是 csv 文件中的逗号。 其中 -f 后跟保留列,即列 1 到 3。

最新更新