Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如果第二次出现的特殊字符后跟特定字符,我想删除整行_Regex_Bash_Sed_Grep_Sh - Fatal编程技术网

Regex 如果第二次出现的特殊字符后跟特定字符,我想删除整行

Regex 如果第二次出现的特殊字符后跟特定字符,我想删除整行,regex,bash,sed,grep,sh,Regex,Bash,Sed,Grep,Sh,例:如果在第二次出现:之后出现*,我想删除下面两行 /path/:456: * This entire line needs to be deleted /auto/myfolder/:999 : * This entire line should get deleted 注意:*应该是第二个:后面的第一个字符,忽略空格 有人能帮我用sed或grep在shell脚本中工作吗 非常感谢。sed: sed '/^[^:]*:[^:]*:[ \t]*\*/d' fil

例:如果在第二次出现
之后出现
*
,我想删除下面两行

/path/:456: * This entire line needs to be deleted

/auto/myfolder/:999 :               *  This entire line should get deleted
注意:
*
应该是第二个
后面的第一个字符,忽略空格

有人能帮我用sed或grep在shell脚本中工作吗

非常感谢。

sed:

sed '/^[^:]*:[^:]*:[ \t]*\*/d' file
说明:

  • ^
    :从行首开始
  • [^::*:
    :搜索零个或更多(
    *
    )非
    字符,后跟
  • [^:::*:
    :与上面相同的模式用于搜索第二个
  • [\t]*
    :选项卡的任意空格数
  • \*
    :转义的
    *
  • 如果找到模式,则对该行应用
    d
    (删除)命令
由于重复了
[^::]*:
,您可以使用
\{2\}
量词:

sed '/^\([^:]*:\)\{2\}[ \t]*\*/d' file
添加
-i
标志以在位编辑文件:

sed -i '/^[^:]*:[^:]*:[ \t]*\*/d' file

THNKS LE,你能解释一下ReEX吗?你知道如何删除SED的评论吗?/路径/:456:*这整行需要删除/ /这应该删除太/ *单行评论*//Auto/MyFixs/:999:*这整行应该得到删除C评论(/**)和C++评论(/)通过使用sed可以从文件中的任何位置读取注释。注释中的代码很难读取。也许你应该问另一个问题。还有什么问题吗?因此,是否可以有一行类似于
/path/:789:some data:*这整行需要删除
,否则这也会起作用:
awk-F:'!($3~/\*/)'文件名