我想在文件上grep 2模式Solaris UNIX。Solaris - 具有OR功能的grep
也就是说grep的 '式样1 OR模式2' 的文件名。
下面的命令不起作用:
grep 'pattern1\|pattern2' filename
什么是错的这个命令?
注:我在Solaris
我想在文件上grep 2模式Solaris UNIX。Solaris - 具有OR功能的grep
也就是说grep的 '式样1 OR模式2' 的文件名。
下面的命令不起作用:
grep 'pattern1\|pattern2' filename
什么是错的这个命令?
注:我在Solaris
该命令对我很好的作品。请添加其他信息,例如您的平台以及您正在使用的确切正则表达式和文件内容(最小化为仍然重现问题的最小示例)。 (我要评论添加到您的文章,但没有足够的声誉。)
这应该是正确的。确保你有或没有添加适当的空格,即“pattern1 \ | pattern2”与“pattern1 \ | pattern2”。
你确定你不只是有案件或什么问题?尝试-i开关。
'\ |'不适用于Solaris ... – jahroy 2013-01-10 20:14:54
这完全取决于什么模式1和模式2是。如果他们只是文字,它应该工作,否则你需要:
grep '\(pattern1\)\|\(pattern2\)'
模式只是单词,它表示未知的转义序列'\ |' – user742004 2011-05-07 00:13:46
'\ |'在Solaris上不起作用... – jahroy 2013-01-10 20:14:30
你是什么操作系统?
它,以与GNU grep的系统工作,但在BSD,Solaris等,不支持\|
。
尝试egrep
或grep -E
,例如
egrep 'pattern1|pattern2'
egrep正常工作。谢谢 – user742004 2011-05-07 00:19:13
如果你想POSIX的功能(即类似Linux的行为),你可以把POSIX 2兼容的二进制文件在你的路径的开始:
$ echo $PATH
/usr/xpg4/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:[...]
也有在/ usr/xpg6这与POSIX 1兼容。
/usr/bin: SVID/XPG3
/usr/xpg4/bin: POSIX.2/POSIX.2a/SUS/SUSv2/XPG4
/usr/xpg6/bin: POSIX.1-2001/SUSv3
使用fgrep
使用古方法(即:固定的字符串),其在Solaris 10作品...
提供一个模式列表,与用换行分隔的每个模式,但引用以便可由shell解释为一个字: -
fgrep 'pattern1
pattern2' filename
这种方法也适用于grep
,fgrep
和/usr/xpg4/bin
egrep
,虽然管道分隔ERE任何egrep
有时是最不挑剔的。
如果您的shell允许历史编辑,例如:在bash
问题C-v C-j
处于emacs模式或vi命令模式下,您可以在字符串中插入任意换行符。
模式只是一个词,我在unix solaris机器上工作。 – user742004 2011-05-07 00:14:46