2017-02-27 73 views
0

我的UNIX非常生疏,但我想要的是在UNIX中搜索包含「generate」和「process」文本中兩個單獨單詞的文件,但兩個單詞都在同一行?在文本中查找包含兩個單獨單詞的文件

我知道有些腳本文件包含腳本作者及其在腳本頂部標註的功能的詳細信息。例如,一個這樣的腳本的開始包含以下內容;

功能:產生銷售加班過程

我試圖像下面的(再次我的UNIX是生鏽)

grep -rwl . -e "generate" | "process" 

但是這給了錯誤,無法識別的命令

我要的是東西進度文件列表像;

salesovertime1.p

salestravel1.p

salesexpenses1.p

salesexpenses2.p

+0

你碰巧有什麼版本的'grep'?你能輸出'grep --version'並將其粘貼到這裏嗎? – Inian

+0

你也可以發佈你的需求與一個適當的例子,如你的輸入和你想要得到的確切輸出? – Inian

+0

@Inian我已經添加了儘可能多的信息。不知道如何找到Grep的版本,但我認爲我們正在運行Solaris 10 – AJF

回答

0

如果你搜索文件,然後find是合適的,然後你可以用grep篩選:

find . -exec grep -H generate {} \; 2> /dev/null | grep process 

會遞歸查找當前目錄中的每個文件,然後過濾包含單詞「generate」的過濾器,並再次使用包含單詞「process」的過濾器過濾該過濾器。使用選項-H(GNU grep)輸出文件名,錯誤消息開始重定向到/dev/null

現在,如果你只想要的文件名,你可以使用:

find . -exec grep -H generate {} \; 2> /dev/null | grep process | cut -f1 -d\: 

如果你想要的「生成」,並在同一個文件,但在不同線路上「過程」,下面會做:

grep process `find . -exec grep -H generate {} \; 2> /dev/null | cut -f1 -d\:` 2> /dev/null | cut -f1 -d\: 

find生成一個文件列表,該文件列表用於grep反對並提取重新指向錯誤的文件名。

+1

而不是重定向錯誤,你可能想'找到。 -type f -exec ...'。您仍會收到有關權限問題的錯誤消息,但目錄錯誤將被刪除。 –

+0

這兩種混合...謝謝 –

+0

@ Jean-BaptisteYunès感謝你讓 - 我應該在我原來的問題中說我正在尋找在同一行上有兩個詞的文件! – AJF

相關問題