首页 > 解决方案 > 文件中带有特殊字符的 grep 字符串

问题描述

我的文件包含:

/*uid:68160*/\n            SELECT
/*uid:68160*/SELECT

我试过以下:

grep -vF "/[*]uid::[[:digit:]][*]/SELECT"

这有助于删除第二行。如何通过 grep 删除第一行也试过:

grep -vF "/[*]uid::[[:digit:]][*]/\n            SELECT"

标签: linuxbashshellgrep

解决方案


假设您有这样的文字

s='/*uid:68160*/\n            SELECT
/*uid:68160*/SELECT
Text'

并且您想删除第 1 行和第 2 行,您可以使用

 grep -Ev '/[*]uid:[[:digit:]]+[*]/(\\n *)?SELECT'

查看在线grep演示

细节

  • -Ev-E启用 POSIX EREv并将否定结果
  • /[*]uid:[[:digit:]]+[*]/(\\n *)?SELECT- 火柴
    • /[*]uid:- 一个/*uid:字符串
    • [[:digit:]]+- 1+ 位数
    • [*]/- 一个*/字符串
    • (\\n *)?- 一个可选组,匹配 1 次或 0 次出现的\n双字符组合,然后匹配任何 0 或多个空格
    • SELECT - 一个字符串

推荐阅读