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。
我正在尝试对 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。