簡體   English   中英

使用-f選項的grep或fgrep沒有輸出不起作用

[英]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 -ffgrep -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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM