我有一个包含两列的CSV文件:
"SKU";"SKU DESCRIPTION"
我想从第二列中删除第二次出现的SKU。
一个例子。
"919";"919 DESCRIPTION"
结果应该是
"919";"DESCRIPTION"
答案 0 :(得分:0)
一种方法是将sed
与捕获组一起使用,并使用对第三捕获组的向后引用,以使第二列的开头与第一列中捕获的内容匹配。
^(("([^"]+)";")\3 )
说明
^
断言字符串的开头(
第一个捕获组
(
第二捕获小组
"([^"]+)";"
匹配双引号并捕获第三个捕获组中的中间内容,然后匹配;"
)\3
关闭第二个捕获组,并使用后向引用和空格来匹配第三个捕获组中捕获的内容)
关闭第一个捕获组然后在替换项中,使用第二个捕获组:
sed -r 's/^(("([^"]+)";")\3 )/\2/' file.csv
如果要备份,请使用:
sed -r -i.bak 's/^(("([^"]+)";")\3 )/\2/' file.csv