我有一个文本文件,里面有很多字符条目,每行一个。
我想找到所有以
::
开头的行,并删除这些行。
正则表达式是什么?
-AD::
开头的行,并删除这些行。
正则表达式是什么?
-AD正则表达式本身并不会执行任何操作,只能用来匹配文本。
你需要的是一些工具,它们使用正则表达式来识别行,并对这些工具应用一些命令。
其中一个这样的工具是 sed
(还有 awk
和许多其他工具)。你可以像这样使用它:
sed -e "/^::/d" < input.txt > output.txt
代码中的"/^::/
"部分告诉sed
应用以下命令到所有以"::"开头的行,"d
"表示删除该行。
或者最简单的解决方案(我的大脑出了点问题,没有想到):
grep -v "^::" input.txt > output.txt
sed -i -e '/^::/d' yourfile.txt
^::.*[\r\n]*
如果您逐行读取文件,则不需要使用[\r\n]*
部分。
简单如下:
^::
感谢您的指引:
以下方法对我有效。在 "::" 后面,文本文件中可能存在任何字符,因此我使用了以下正则表达式:
^::[a-zA-Z0-9 我将所有标点符号都放在这里]*$
-AD
如果您没有sed或grep,请查找此内容并替换为空字符串:
^::.*[\r\n]
这是我的C#贡献:
文本流:
string stream = :: This is a comment line
语法:
Regex commentsExp = new Regex("^::.*", RegexOptions.Singleline);
使用方法:
Console.WriteLine(commentsExp.Replace(stream, string.Empty));
或者,如果我想要简单地拿取一个包含注释的文本文件,并产生一个去除注释行的精确副本,我可以使用 type 和 findstr 命令行工具的简单而有效的组合:
type commented.txt | findstr /v /R "^::" > uncommented.txt