2013-07-12 57 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