正则表达式,用于查找包含特定字符的行并删除该行

时间:2009-02-04 13:20:46

标签: regex

我的文本文件有很多字符条目一行接一行。 我想查找以::开头的所有行并删除所有这些行。

执行此操作的正则表达式是什么?

-AD

7 个答案:

答案 0 :(得分:8)

正则表达式不“做”任何事情。它们只匹配文字。

你想要的是一些使用正则表达式来识别一条线然后将一些命令应用于这些工具的工具。

其中一个工具是sed(还有awk和其他许多工具)。你会这样使用它:

sed -e "/^::/d" < input.txt > output.txt

/^::/”部分告诉sed将以下命令应用于以“::”开头的所有行,“d”仅表示“删除该行”。 / p>

或者最简单的解决方案(我的大脑因某些奇怪的原因而没有产生):

grep -v "^::" input.txt > output.txt

答案 1 :(得分:2)

sed -i -e '/^::/d' yourfile.txt

答案 2 :(得分:1)

^::.*[\r\n]*

如果您逐行阅读文件,则不需要[\r\n]*部分。

答案 3 :(得分:0)

简单如下:

^::

答案 4 :(得分:0)

如果您没有sed或grep,请找到并替换为空字符串:

^::.*[\r\n]

答案 5 :(得分:0)

感谢指点:

以下的事情对我有用。在“ :: ”之后,任何字符都可能出现在文本文件中,所以我给出了:

^ :: [a-zA-Z0-9我把所有标点符号放在这里] * $

-AD

答案 6 :(得分:0)

这是我在C#中的贡献:

文字流:

string stream = :: This is a comment line

语法:

Regex commentsExp = new Regex("^::.*", RegexOptions.Singleline);

用法:

Console.WriteLine(commentsExp.Replace(stream, string.Empty));

或者,如果我想简单地采用包含注释的文本文件并在没有注释行的情况下生成完全重复,我可以使用类型和findstr命令行工具的简单但有效的组合:

type commented.txt | findstr /v /R "^::" > uncommented.txt