找到匹配项并将其删除,仅保留不匹配项

时间:2019-01-12 15:12:30

标签: sed

我有一个以下文件。 我想用sed和regex解决它。

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

因此,当我运行它时,它将删除所有匹配的行,并离开Jimmy和Alec或将未找到的内容写入新文件。

如果我使用正则表达式,我知道下面的代码将查找匹配的数字

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

我想要这样的东西。 猫文件| sed -r \ d \ d \ d \ d \ d \ d [-] \ d \ d \ d \ d $ 因此,当我运行它时,它将删除所有匹配的行,并离开Jimmy和Alec或将未找到的内容写入新文件。

1 个答案:

答案 0 :(得分:1)

您可以使用

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

请参见this sed demo

详细信息

  • -E-POSIX ERE标志,无需在量词中转义{}
  • [0-9]{6}-[0-9]{4}-正则表达式匹配6位数字,-再匹配4位数字
  • d-删除与正则表达式模式匹配的行。