Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
grep与string1或string2匹配_Grep_Solaris - Fatal编程技术网

grep与string1或string2匹配

grep与string1或string2匹配,grep,solaris,Grep,Solaris,我想在Solaris UNIX上的文件中grep 2个模式 这是grep'pattern1或pattern2'文件名 以下命令不起作用: grep'pattern1\| pattern2'文件名 这个命令有什么问题 注意:我在Solaris上该命令对我很有效。请添加其他信息,例如您的平台以及您正在使用的确切正则表达式和文件内容(最小化到仍然重现该问题的最小示例)。(我会在你的帖子上加一条评论,但是没有足够的声誉。)这应该是正确的。确保添加或不添加适当的空格,即“pattern1\| patter

我想在Solaris UNIX上的文件中grep 2个模式

这是grep'pattern1pattern2'文件名

以下命令不起作用:

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
issue
C-v C-j

模式只是单词,它说未知转义序列“\\\\”模式只是一个单词,我在unix solaris机器上工作。