найти совпадение и удалить их, оставив только то, что не совпадает - PullRequest
0 голосов
/ 12 января 2019

У меня есть файл со следующим. И я хочу использовать sed и regex, чтобы решить это.

Alex Trump, New York, 123445-4567
Jimmy Carter, Los Santos, 123245-3x20
Alec Baldwin, babylon 5,
Luke Skywater, cloud city, 223345-1420

Поэтому, когда я запускаю, он удаляет все совпадающие строки и оставляет Джимми и Алек или записывает то, что не было найдено, в новый файл.

Если я использую регулярное выражение, я знаю, что приведенный ниже код будет искать соответствующую цифру

\d\d\d\d\d\d[-]\d\d\d\d$

Я хочу что-то подобное. кошачий файл | sed -r \ d \ d \ d \ d \ d \ d [-] \ d \ d \ d \ d $ Поэтому, когда я запускаю его, он удаляет все совпадающие строки и оставляет Джимми и Алек или записывает то, что не было найдено, в новый файл.

1 Ответ

0 голосов
/ 12 января 2019

Вы можете использовать

sed -E '/[0-9]{6}-[0-9]{4}/d' file > newfile

См. это sed демо .

Подробнее

  • -E - флаг POSIX ERE, не нужно экранировать { и } в квантификаторах
  • [0-9]{6}-[0-9]{4} - регулярное выражение, соответствующее 6 цифрам, - и затем 4 цифрам
  • d - удаляет линии, соответствующие шаблону регулярных выражений.
...