Regex 使用VI提取最后一列

Regex 使用VI提取最后一列,regex,unix,vim,awk,vi,Regex,Unix,Vim,Awk,Vi,我有一个csv文件,其中包含大约1000个带值的字段,标题如下: v1,v2,v3,v4,v5…v1000 我想提取最后一列,即v1000及其值 我尝试了%s/,[^,]*$/,但结果与我的预期完全相反,有没有办法在VI中反转此表达式 我知道可以使用awk作为awk-F,“{print$NF}”myfile.csv来完成,但我想用正则表达式在VI中实现它,请注意,我有VI,没有VIM,在UNIX上工作,所以我也不能使用可视模式 非常感谢您的帮助。您不就是想要吗 %s/.*,\s*// *,将所

我有一个csv文件,其中包含大约1000个带值的字段,标题如下:

v1,v2,v3,v4,v5…v1000

我想提取最后一列,即v1000及其值

我尝试了%s/,[^,]*$/,但结果与我的预期完全相反,有没有办法在VI中反转此表达式

我知道可以使用awk作为awk-F,“{print$NF}”myfile.csv来完成,但我想用正则表达式在VI中实现它,请注意,我有VI,没有VIM,在UNIX上工作,所以我也不能使用可视模式

非常感谢您的帮助。

您不就是想要吗

%s/.*,\s*//
*,将所有内容与最后一个逗号匹配,如果有,则\s*用于删除空格。

您不想要吗

%s/.*,\s*//

*,将所有内容与最后一个逗号相匹配,如果有空格,\s*用于删除空格。

您已经接受了答案,顺便说一句,您仍然可以在VI或VIM中使用awk或其他漂亮的UNIX工具。下面的技术调用通过外部命令操纵缓冲区的内容:!{cmd}

作为演示,让我们使用sort命令重新排列CSV文件中的记录:

-k2标志将按第二个字段对记录进行排序

使用awk尽可能简单地提取最后一列:

:%!awk -F "," '{print $NF}'

您已经接受了答案,顺便说一句,您仍然可以在VI或VIM中使用awk或其他优秀的UNIX工具。下面的技术调用通过外部命令操纵缓冲区的内容:!{cmd}

作为演示,让我们使用sort命令重新排列CSV文件中的记录:

-k2标志将按第二个字段对记录进行排序

使用awk尽可能简单地提取最后一列:

:%!awk -F "," '{print $NF}'
别忘了切

:%!cut -d , -f 6
其中6是最后一个字段的编号

或者,如果您不想计算字段数:

:%!rev | cut -d , -f 1 | rev
别忘了切

:%!cut -d , -f 6
其中6是最后一个字段的编号

或者,如果您不想计算字段数:

:%!rev | cut -d , -f 1 | rev

非常感谢,非常干净非常干净