Grep: Удалить дубликаты ввода из второго столбца - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть файл CSV с двумя столбцами:

"SKU";"SKU DESCRIPTION"

Я хочу удалить второе вхождение SKU из второго столбца.

Пример.

"919";"919 DESCRIPTION"

Результат должен быть.

"919";"DESCRIPTION"

1 Ответ

0 голосов
/ 23 ноября 2018

Одним из способов может быть использование sed с группами захвата и обратной ссылкой на третью группу захвата, чтобы сопоставить начало второго столбца с тем, что записано в первом столбце.

^(("([^"]+)";")\3 )

Regex demo

Пояснение

  • ^ Утверждение начала строки
  • ( 1-я группа захвата
    • ( 2-я группа захвата
      • "([^"]+)";" Совпадение двойных кавычек и захватывание того, что находится между ними в 3-й группе захвата, с последующим сопоставлением ;"
    • )\3 Закрыть 2-ю группу захвата и сопоставить данные, захваченные в 3-й группе захвата, используя обратную ссылку, за которой следует пробел
  • ) Закрытьпервая группа захвата

Затем при замене используйте вторую группу захвата:

sed -r 's/^(("([^"]+)";")\3 )/\2/' file.csv

Если вы хотите сделать резервную копию, используйте:

sed -r -i.bak 's/^(("([^"]+)";")\3 )/\2/' file.csv

...