独特的search和replace
我有一个两列csv。 如果我将这个csv导入到excel中,那么我最终会得到A列和B列。
列A包含一个文本string,如:1234(每一行都有一个唯一的值)
B列包含一串文本,例如:abcd1234
我需要删除列A中包含的列B中的文本。每行都有唯一的数据,所以示例如下所示:
1234, abcd1234, 5678, efgh5678, 9876, ijkl9876,
我想要结束的是:
1234, abcd, 5678, efgh, 9876, ijkl,
任何想法,我很高兴处理与命令行excel。
在Vim中,可以通过:substitute
,捕获第一列和第二列中不匹配第一个值(通过\1
引用)的那些部分来做到这一点。 我会让比赛从第二栏开始(用\zs
); 这样可以避免重新引用replace部分中的第一列,该replace部分仅包含之前( \2
;不存在于您的示例文本中)和( \3
)来自第1列的重复部分之后的内容。
:%substitute/^\([^,]\+\),\zs\([^,]*\)\1\([^,]*\)/\2\3/
假设一个简单的CSV格式, [^,]
代表列中的任何字符。