我只想读取日志文件,进行搜索和替换,然后写出对同一日志文件的更改.
在Perl中执行此操作的最佳实践方法是什么?
我试图用一个新行替换文件中的两行:
foo1.txt
aaa aaa
bbb bbb
ccc ccc
ddd ddd
bbb bbb
ddd ddd
Run Code Online (Sandbox Code Playgroud)
替换文件后应该看起来像这样
foo1.txt
aaa aaa
eee eee
ddd ddd
bbb bbb
ddd ddd
Run Code Online (Sandbox Code Playgroud)
有没有办法使用sed或其他命令在文件夹的所有文件中替换它
我一直在尝试用sed但没有任何成功: sed 's/bbb\tbbb\nccc\tccc/eee\teee/g' foo*.txt
我正在尝试使用perl来搜索和替换一些过时的MySQL命令
perl -i -pe 'BEGIN{undef $/;} s/if @RequestID.*@NextValue=@TableNameID output/if @RequestID is not NULL\n begin\n select @TableNameID = @TableNameID + 1/smgi' $file1
Run Code Online (Sandbox Code Playgroud)
但是目前文件在暗示正则表达式不匹配之前和之后仍然完全相同?
我smgi打开了标志,所以.*也匹配新行从Multiline搜索替换Perl的建议
这是我想要匹配的文件的剪辑
if ( @@rowcount = 0 )
return 1
update Sequence set CurrentValue = @TableNameID where Code = 'TableName'
end
/* TableNames - Approval Request ID */
if @RequestID is not NULL
begin
exec spGetNextSequence @Name='TableName', @NextValue=@TableNameID output
insert into TableName /* RequestID */
(
TableNameID,
TxnVrsnID,
FldNmCod,
Run Code Online (Sandbox Code Playgroud)
如果你在http://regexpal.com/(或任何类似的正则表达式测试仪)测试模式- smi …
我希望在正则表达式匹配后删除该行,但我不确定如何编写删除Perl中的下一行 - 帮助?
while ( my $line = <FILE> ) {
if ($line =~ m/(regex)/i) {
# delete the next $line
}
Run Code Online (Sandbox Code Playgroud)