[英]No Output from grep or fgrep with -f option not working
我在文件中具有以下正則表達式。 BTW,SunOS上的即時消息
例如:文件模式包含以下幾行:
Ora-[0-9]
violated
我有一個文件“ datafile ”,其中包含以下內容:
0:/scm/123451/test1.sql:dbuser@database:databasedb:no:yes:ORA-1234|key violated
1:/scm/123451/test1.sql:dbuser@database:databasedb:no:yes:ORA-|key violated
2:/scm/123451/test1_A.sql:dbuser@database:databasedb:no:yes:ORA-|key violated
3:/scm/123451/test1_B.sql:dbuser@database:databasedb:yes:yes:Violated
4.giga:key violated unique:giga
5.fifa:ora-error null value found:giga
現在,我想使用grep -f或fgrep -f命令查找與模式文件的正則表達式匹配的行。 當模式文件僅包含“ Ora- [0-9]”行時,以下兩個命令不起作用。
grep -if ./pattern ./datafile
frep -if ./pattern ./datafile
我是否缺少某些內容,圖案文件中的圖案是否需要固定字符串?
嘗試使用/usr/xpg4/bin/grep
不是/usr/bin/grep
,這似乎是您獲得結果的地方。 Solaris /usr/bin
中有許多UNIX命令,這些命令較舊,可以追溯兼容。 /usr/bin/awk
是臭名昭著的。
您可以使用grep
命令查看默認情況下獲得的grep
:
which grep
您可以通過在進入/usr/xpg4/bin
之前將/usr/xpg4/bin
放入PATH變量中來為您的過程進行更改。 或將grep
用作/ usr / xpg4 / bin / grep的別名。
在.profile中添加一個別名(可能是.bashrc,無論如何):
alias grep=/usr/xpg4/bin/grep
更改您的PATH(再次在.profile中或任何位置):
舊路徑示例-
PATH=/usr/bin:/usr/sbin
示例更改路徑
PATH=/usr/bin/xpg4/bin:/usr/bin:/usr/sbin
更改PATH可能會影響現有個人腳本的行為,通常以較小但有時令人討厭的方式。
也可以考慮只使用egrep -i '(ora|violated)'
-基於您的示例的建議。 這不需要模式文件。 可以根據需要進行多種更改。
我認為您沒有注意到該模式僅與“ Ora”匹配,但是如果您在數據文件中查找,則有一個“ ora”和一個“ ORA”,但沒有“ Ora”。 因此,包括不區分大小寫的匹配或糾正模式。
編輯:道歉,在這里有點晚了。 我沒有注意到SunOS。 似乎在SunOS上,grep實現不同,因為它可以在此處的Linux盒中正常運行。 Solaris grep問題?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.