我有一个有两列的csv。如果我将此csv导入excel,我最终会得到A列和B列。
A列包含一串文字,例如:1234(每行有一个唯一值)
B列包含一串文本,例如:abcd1234
我需要删除A列中包含的B列中的文本。每行都有唯一的数据,所以示例如下:
1234, abcd1234,
5678, efgh5678,
9876, ijkl9876,
我最终想要的是:
1234, abcd,
5678, efgh,
9876, ijkl,
我很乐意使用命令行来处理任何想法。
答案 0 :(得分:1)
在Vim中,您可以通过:substitute
,捕获第一列以及第二列中与第一个值不匹配的部分(通过\1
引用)来执行此操作。我将让匹配从第二列开始(使用\zs
);这样可以避免重新引用替换部分中的第一列,该部分仅包含之前的内容(\2
;不在示例文本中),以及(\3
之后)第1列中的重复部分
:%substitute/^\([^,]\+\),\zs\([^,]*\)\1\([^,]*\)/\2\3/
[^,]
代表列中的任何字符,假设采用简单的CSV格式。