2013-07-12 55 views
0

我正在編寫一個編程任務,我必須在文本文件中搜索條目,並打印出與該條目相對應的文本。舉個例子,假設我有一個條目,如下所示,使用關鍵字搜索文本,沒有grep,sed,awk等

李四

34 RIGHT WAY

HALIFAX

465-0394

,且用戶輸入HALIFAX作爲關鍵字,然後我希望找到哈利法克斯所在的行,然後用此條目打印出所有相關的文本。棘手的部分是在不使用grep,sed或awk的情況下完成此操作,因爲如果使用這些命令,則不會接受賦值。我想過使用正則表達式,但是這些文本操作只能在一行上完成,而且我必須爲整個文件完成。截至目前我難住,任何幫助將不勝感激!

亞歷克斯

+1

你可以添加你到目前爲止嘗試過的代碼嗎? – dustin

回答

0

我假設這是從標記的bash腳本。我的建議是將文本文件逐行讀入數組中,然後遍歷數組,在每個字符串中搜索關鍵字。這可以使用通配符完成。這是一個鏈接:String contains in Bash。你能否澄清「用這個條目打印出所有相關文字」?

1

你應該在一行的bash腳本行讀取整個文件,然後檢查是否行包含您的搜索字詞

cat $FILENAME | while read LINE 
do 
     if [[ $LINE =~ *HALIFAX* ]] then 
      echo "I found HALIFAX" 
     fi 
done 

從這裏開始,它應該是很容易爲你打印出來休息。

+0

如果我是你的老師,我會通過你的低年級,因爲這裏[無用的'cat'](http://partmaps.org/era/unix/award.html)。 – tripleee

0

您可以通過使用while循環逐行讀取文件來完成此操作。

#set the delimiter to newline 
IFS_backup=$IFS 
IFS=$'\n' 

#variable to calculate line number 
lineNum=0 
while read a1 
do 
let "lineNum++" #increment variable for each line 

#variable a1 store the value of each line 

#do comparision with $a1 by user input string 
#if string match then value of lineNum equal to the line number of file 
# containing user input string 

done<filename