Mac OS/X,Grep 和空白问题

Mac OS/X, Grep and Whitespace issues

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

解决了。不过,我需要感谢 vielmetti 和 suku 为我指明了正确的方向。

问题是多方面的。

首先,问题与在 Mac 操作系统上从 Word 文档保存的文本文件的编码有关。您需要将其保存为 MS-DOS 格式,并且不要插入换行符。

一旦问题得到解决,该命令便开始查找所需的文本,而且,一旦我想出了 MAC 脚本方法以便我可以将 grep 命令正确地放入 vba,一切都失败了到位。

因此,回顾一下 - 在 MAC 上将 MS-Word 文档保存为文本文件时,请确保使用带 OUT 换行符的 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。