删除csv最后一列的linux命令

cl25kdpy  于 2023-07-31  发布在  Linux
关注(0)|答案(4)|浏览(173)

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

输入示例

AAA BBB CCC DDD
111 222 333 444

预期输出

AAA BBB CCC
111 222 333

k7fdbhmy

k7fdbhmy1#

删除第一个字段而不是最后一个字段很容易。因此,我们反转内容,删除第一个字段,然后再反转一次。
下面是一个“CSV”示例

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

字符串
将“file1”和“,”替换为相应的文件名和分隔符。

mitkmikd

mitkmikd2#

你可以使用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表示法。

fjnneemd

fjnneemd3#

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

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

字符串
例如:

echo "aaa bbb ccc ddd 111 222 333 444" | sed -r 's/(.*)\s+[^\s]+$/\1/'

wgeznvg7

wgeznvg74#

cut -d ',' -f 1-3 inpyt.csv > output.csv

字符串
其中-d后跟分隔符,在csv文件中是逗号。其中-f后面是保留列,即列1到3。

相关问题