2009-10-31 78 views
0

我想寫我的第一個腳本來搜索名爲test的文本文件中的給定模式。這裏是腳本:foreach不匹配-C shell腳本

#! /bin/csh 
echo -n "enter pattern: " 
    set pattern = $< 
    foreach word (`cat test`) 
     echo $word | egrep $pattern 
    end 

當我嘗試運行它時,我得到消息foreach:找不到匹配項。我懷疑問題是由(cat test)造成的。任何幫助將非常感激。

+0

它適用於我原樣(沒有添加空格)。 – 2009-10-31 10:44:57

+0

所以也許這是C shell的問題。 – Mike55 2009-10-31 13:59:07

回答

1

它是否必須是C shell ...?你可以學習使用awk搜索文件

awk 'BEGIN{ 
printf "Enter Pattern: " 
getline pattern < "-" 
} 
$0 ~ pattern{ 
    print 
} 
' myfile 
+0

是的不幸的是它確實。 – Mike55 2009-10-31 10:11:05

+0

好的問題解決了。打開後和關閉括號之前必須有空格。 – Mike55 2009-10-31 10:34:32

1

@Pat - 很高興你已經修復它。循環遍歷文件中的單詞並在每個單詞上運行egrep有點奇怪 - 我推測你正在學習C shell循環,而不是尋找最簡潔的解決方案。你可以對陣整個文件一氣呵成:

egrep "\b$pattern\b" test 

\b,使一個字邊界上的grep匹配。

你有我的同情編程與csh - 這裏有一些思想:Csh Programming Considered Harmful

+0

謝謝馬丁。這是我課程作業的一部分,不幸的是我們必須使用C shell。至於Csh編程被認爲是有害的,我已經閱讀過它:)。 – Mike55 2009-10-31 11:05:56