Mac OS / X,Grep和Whitespace问题

时间:2015-07-18 04:57:40

标签: regex macos grep whitespace

我正在尝试在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显然不是火箭手术,所以我在这里失踪了什么?????

1 个答案:

答案 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。