首页 > 解决方案 > 如何删除第一个之后包含特殊字符的行:

问题描述

例子:

user1@mail.com:password!@#$
user@mail.com:password
user2@mail.com:pa$$w0rd

预期输出:

user@mail.com:password

标签: regexawksedgrep

解决方案


细节将取决于你所说的“特殊”字符是什么意思。假设,只是为了讨论,“特殊”意味着非字母和非数字。

让我们运行grep来查找您的“特殊”模式:所有带有冒号的行在某个点后跟一个“特殊”字符。

$ grep ":.*[^A-Za-z0-9]" foo.dat

一旦您仅在具有“特殊”字符的行上获得匹配项,您就可以添加 grep 的-v选项以省略与您的模式匹配的行。

$ grep -v ":.*[^A-Za-z0-9]" foo.dat

换句话说,-v只会打印与您的模式不匹配的行,这意味着在这种情况下,它将打印没有冒号后跟特殊字符的行。


推荐阅读