我有一个包含以下内容的文本文件(内容可变为> 10 MB)我想将副本数量设置/替换为动态数字和。我使用sed utiliy做同样的事情,但它会显示comand提示。有没有办法使用C#/正则表达式?
如何将更改的模式写回文件?
%-12345X@PJL JOB NAME = "Microsoft Word -Values.docx" @PJL OKIAUXJOBINFO DATA="ComputerName=USER-PC" @PJL OKIAUXJOBINFO DATA="UserName=user" @PJL OKIAUXJOBINFO DATA="PortName=PORTCUSTOM" @PJL OKIAUXJOBINFO DATA="ReceptionTime=22:04:09 2012/02/01" @PJL OKIAUXJOBINFO DATA="DocumentName=Microsoft Word - LDAPValues.docx" @PJL OKIAUXJOBINFO DATA="MultiPage=1" @PJL OKIAUXJOBINFO DATA="ApplicationName=Microsoft Office Word" @PJL OKIJOBACCOUNTJOB JOBACCOUNTID=0 USERID="user" JOBNAME="Microsoft Word - Values.docx" @PJL RDYMSG DISPLAY = "" @PJL COMMENT OS Version : Windows NT 6.1 Build 7600 @PJL COMMENT Product Name : OKI PCL5c Printer Driver @PJL COMMENT Device Name : OKI @PJL COMMENT Version : 1.0.5 @PJL COMMENT Build Date : 2010/03/30 (Tue) 16:17:01 @PJL SET OKIPAPERSIZECHECK=ENABLE @PJL SET OKICUPAPERSIZECHECK=ENABLE @PJL SET MANUALFEED=OFF @PJL SET OKIXDIMENSIONMILLIMETER=216 @PJL SET OKIYDIMENSIONMILLIMETER=280 @PJL SET MEDIASRCMANUAL=2 @PJL SET MEDIASRCINTRAY1=4 @PJL SET MEDIASRCINTRAY2=1 @PJL SET MEDIASRCINTRAY3=5 @PJL SET MEDIASRCINTRAY4=6 @PJL SET MEDIASRCINTRAY5=20 @PJL SET MEDIASRCINTRAY6=21 @PJL SET MEDIASRCINTRAY7=22 @PJL SET QTY=1 @PJL SET COPIES=2 @PJL SET OKIRESOLUTION=X600Y600LEVEL2
答案 0 :(得分:3)
这会找到“@PJL SET COPIES=
”
(?<=@PJL\ SET\ COPIES=)\d+
像这样使用
Regex.Replace(text, @"(?<=@PJL\ SET\ COPIES=)\d+", newCount.ToString());
我使用了Regex环视模式
(?<=prefix)find
答案 1 :(得分:1)
似乎
Regex.Replace(
input,
@"COPIES=\d+",
string.Format("COPIES={0}", number),
RegexOptions.Multiline);
会做到这一点。
http://msdn.microsoft.com/en-us/library/taz3ak2f.aspx
将其写回文件将如下所示:
string input = File.ReadAllText("filename.txt");
string output = Regex.Replace(
input,
@"COPIES=\d+",
string.Format("COPIES={0}", number),
RegexOptions.Multiline);
File.WriteAllText("filename.txt", output);