如何在第一个之后删除包含特殊字符的行thats:

时间:2018-12-08 00:57:41

标签: regex awk sed grep

示例:

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

预期输出:

user@mail.com:password

1 个答案:

答案 0 :(得分:1)

详细信息将取决于您所说的“特殊”字符。 出于讨论的目的,假设“特殊”是指非字母和数字。

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

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

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

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

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