我正在尝试在OS / X中的文本文件上使用GREP作为测试。众所周知,它包含以下文本,包括空格字符。
(10) Business Day
我的正则表达式搜索模式如下:
[\(][0-9]{1,3}[\)] business day
但是,这不起作用:
$ grep -Eoi '[\(][0-9]{1,3}[\)] business day' *.txt
如果我删除" day"从上面我得到了这个:
$ grep -Eoi '[\(][0-9]{1,3}[\)] business' *.txt
(10) Business
上述行的egrep -oi或grep -Eoi的预期输出。
这两个都没有:
$ grep -Eoi '[\(][0-9]{1,3}[\)]\sbusiness\sday' *.txt
也不是这样:
$ grep -Eoi '[\(][0-9]{1,3}[\)] business\sday' *.txt
也不是这样:
$ grep -Eoi '[\(][0-9]{1,3}[\)][[:space:]]business[[:space:]]day' *.txt
也不是这样:
$ grep -Eoi '[\(][0-9]{1,3}[\)] business[[:space:]]day' *.txt
产生所需的结果,即:
(10) Business Day
相反,他们提到了这个:
$
(无)
我浪费了几个小时在我的桌子上敲了几个小时。 Grep显然不是火箭手术,所以我在这里失踪了什么?????
答案 0 :(得分:1)
解决了它。我要感谢vielmetti和suku指出我正确的方向。
问题是多方面的。
首先,问题与从Mac操作系统上的Word文档保存时文本文件的编码有关。您需要将其保存为MS-DOS格式,并且不要插入换行符。
一旦解决了,命令就开始找到所需的文本了,一旦我找到了MACScript方法,所以我可以把grep命令正确地放到vba中,一切都就到位了。
因此,要查看 - 将MAC上的MS-Word文档保存为文本文件时,请确保使用MS-DOS格式化而不是换行符。
这是保存它的VBA命令:
Document.SaveAs FileName:=filePath & docName & ".txt", _
FileFormat:=wdFormatText, _
LockComments:=False, _
Password:="", _
AddToRecentFiles:=False, _
WritePassword:="", _
ReadOnlyRecommended:=False, _
EmbedTrueTypeFonts:=False, _
SaveNativePictureFormat:=False, _
SaveFormsData:=False, _
SaveAsAOCELetter:=False, _
Encoding:=437, _
InsertLineBreaks:=False, _
AllowSubstitutions:=False, _
LineEnding:=wdCROnly
键设置InsertLineBreaks:= False,可能还有LineEnding:= wdCROnly。