我如何编写一个linux命令来删除制表符分隔的csv的最后一列?
输入示例
AAA BBB CCC DDD111 222 333 444
预期输出
AAA BBB CCC111 222 333
k7fdbhmy1#
删除第一个字段而不是最后一个字段很容易。因此,我们反转内容,删除第一个字段,然后再反转一次。下面是一个“CSV”示例
rev file1 | cut -d "," -f 2- | rev
字符串将“file1”和“,”替换为相应的文件名和分隔符。
mitkmikd2#
你可以使用cut来实现。使用选项-d指定分隔符,然后给予希望在输出中包含的字段编号(选项-f)。输入的每一行都被单独处理:
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表示法。
$'\t'
bash
fjnneemd3#
您可以使用下面的命令,它将删除制表符分隔的csv的最后一列,而不考虑字段编号,
sed -r 's/(.*)\s+[^\s]+$/\1/'
字符串例如:
echo "aaa bbb ccc ddd 111 222 333 444" | sed -r 's/(.*)\s+[^\s]+$/\1/'
型
wgeznvg74#
cut -d ',' -f 1-3 inpyt.csv > output.csv
字符串其中-d后跟分隔符,在csv文件中是逗号。其中-f后面是保留列,即列1到3。
4条答案
按热度按时间k7fdbhmy1#
删除第一个字段而不是最后一个字段很容易。因此,我们反转内容,删除第一个字段,然后再反转一次。
下面是一个“CSV”示例
字符串
将“file1”和“,”替换为相应的文件名和分隔符。
mitkmikd2#
你可以使用
cut
来实现。使用选项-d
指定分隔符,然后给予希望在输出中包含的字段编号(选项-f
)。输入的每一行都被单独处理:字符串
这是根据你的话。你的例子看起来更像是你想在中间去掉一列:
型
$'\t'
是包含单个制表符的字符串的bash
表示法。fjnneemd3#
您可以使用下面的命令,它将删除制表符分隔的csv的最后一列,而不考虑字段编号,
字符串
例如:
型
wgeznvg74#
字符串
其中-d后跟分隔符,在csv文件中是逗号。其中-f后面是保留列,即列1到3。