grep与string1或string2匹配
我想在Solaris UNIX上的文件中grep 2个模式 这是grep'pattern1或pattern2'文件名 以下命令不起作用:grep与string1或string2匹配,grep,solaris,Grep,Solaris,我想在Solaris UNIX上的文件中grep 2个模式 这是grep'pattern1或pattern2'文件名 以下命令不起作用: grep'pattern1\| pattern2'文件名 这个命令有什么问题 注意:我在Solaris上该命令对我很有效。请添加其他信息,例如您的平台以及您正在使用的确切正则表达式和文件内容(最小化到仍然重现该问题的最小示例)。(我会在你的帖子上加一条评论,但是没有足够的声誉。)这应该是正确的。确保添加或不添加适当的空格,即“pattern1\| patter
grep'pattern1\| pattern2'文件名
这个命令有什么问题
注意:我在Solaris上该命令对我很有效。请添加其他信息,例如您的平台以及您正在使用的确切正则表达式和文件内容(最小化到仍然重现该问题的最小示例)。(我会在你的帖子上加一条评论,但是没有足够的声誉。)这应该是正确的。确保添加或不添加适当的空格,即“pattern1\| pattern2”与“pattern1\| pattern2”
你确定你不仅仅是在案件或其他方面有问题吗?尝试-i开关。这完全取决于模式1和模式2是什么。如果它们只是文字,那么应该有效,否则您需要:
grep '\(pattern1\)\|\(pattern2\)'
你使用的是什么操作系统 它将在带有GNU grep的系统上工作,但在BSD、Solaris等系统上,
\\\\\\
不受支持
尝试egrep
或grep-E
,例如
egrep 'pattern1|pattern2'
如果您想要POSIX功能(即类似Linux的行为),可以将POSIX 2兼容的二进制文件放在路径的开头:
$ echo $PATH
/usr/xpg4/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:[...]
还有与POSIX 1兼容的/usr/xpg6
/usr/bin: SVID/XPG3
/usr/xpg4/bin: POSIX.2/POSIX.2a/SUS/SUSv2/XPG4
/usr/xpg6/bin: POSIX.1-2001/SUSv3
在Solaris 10上使用
fgrep
(即:固定字符串)的一种神秘方法
提供一个模式列表,每个模式之间用换行符分隔,并引用,以便shell将其解释为一个单词:-
fgrep 'pattern1
pattern2' filename
此方法也适用于/usr/xpg4/bin
中的grep
、fgrep
和egrep
,尽管在任何egrep
中分隔的管道有时最不复杂
如果shell允许历史记录编辑,您可以在字符串中插入任意换行符,例如:在emacs模式或vi命令模式下的
bash
issueC-v C-j
。模式只是单词,它说未知转义序列“\\\\”模式只是一个单词,我在unix solaris机器上工作。