我有一个大Sub AttachmentDownload()
Const olFolderInbox As Integer = 6
'~~> Path for the attachment
Const AttachmentPath As String = "C:\TEMP\TestExcel"
Dim oOlAp As Object
Dim oOlns As Object
Dim oOlInb As Object
Dim oOlItm As Object
Dim oOlAtch As Object
Dim NewFileName As String
NewFileName = "Daily Tracker " & Format(Now, "dd/MM/yyyy")
Set oOlAp = GetObject(, "Outlook.application")
Set oOlns = oOlAp.GetNamespace("MAPI")
Set oOlInb = oOlns.GetDefaultFolder(olFolderInbox)
For Each oOlItm In oOlInb.Items
If InStr(oOlItm.Subject, NewFilename)) <> 0 Then
ElseIf oOlItm.Attachments.Count <> 0 Then
For Each oOlAtch In oOlItm.Attachments
oOlAtch.SaveAsFile (AttachmentPath)
Exit For
Next
Else
MsgBox "No attachments found"
End If
Exit For
Next
End Sub
大的文件,不幸的是它没有任何换行符。
幸运的是,很容易找到我希望插入换行符的位置,这是在以下正则表达式之后:
~5.1GB
匹配\{(.*?)\}
和{
内的所有内容。
我尝试使用grep查找与上述匹配的输出但是我收到以下错误:
}
因为它试图将完整的5GB线加载到内存中。有没有办法处理它而不将其加载到内存中并在每次正则表达式匹配后附加一个新行?
我在Linux方面不是很有经验,作为参考,这将在Amazon Linux EC2实例上运行。
答案 0 :(得分:2)
使用sed
的内联替换:
sed -i 's/{[^}]*}/&\n/g' file
-i
选项指定文件应该就地编辑。
脚本's/{[^}]*}/&\n/g'
说明s
出现{[^}]*}
&\n
次&
(其中g
表示匹配的字符串本身)file
在<?php
$a = 'www.mydomain.com/product/$ID_PRODUCT$/ID_$ID_PRODUCT$';
echo preg_replace('/[$][a-zA-Z_]+[$]/',"1234",$a);
。