我想在文件上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