Linux 如何从文件中grep模式

Linux 如何从文件中grep模式,linux,shell,Linux,Shell,我想读取一个文件和里面的grep模式,并逐行显示它 hi hi hello hey hello hi 这些是我的文件内容 files="testOne.sh demo.sh test.sh" for i in $files do while read line do pat=`grep "hi"` echo $pat done < $i done files=“testOne.sh demo.sh test.sh

我想读取一个文件和里面的grep模式,并逐行显示它

hi
hi
hello
hey
hello
hi
这些是我的文件内容

files="testOne.sh demo.sh test.sh"

for i in $files
do
    while read line
    do
            pat=`grep "hi"`
            echo $pat
    done < $i
done
files=“testOne.sh demo.sh test.sh”
对于$file中的i
做
读行时
做
帕特=`grep“嗨”`
回声$pat
完成<$i
完成
这是我的密码

有人能帮我解决这个问题吗?

尝试使用
grep
grep-ri.
(在整个目录中搜索,甚至是递归的,大小写都不重要)。它将显示找到的所有行。如果您只需要该行的一些特定信息,请使用其他一些工具,如
awk
来获取该特定列


文件的for循环是一种过激行为,需要的资源比完成任务所需的资源多得多。

只需一个循环就可以做到这一点,因此我将您的代码更改为:

files="testOne.sh demo.sh test.sh"
for i in $files
do
  grep hi "$i"
done

你为什么要一行一行地做?你不能直接
grep
文件吗?只需执行grep“hi”testOne.sh demo.sh test.sh实际上这是一个日志文件,我需要读取并grep一个模式并逐个打印它。您是否尝试运行我提供给您的命令?我已经知道该命令。但我已经把这些文件放在一个变量中,并放在一个forloop中,正如你在我的codeEcho中看到的那样,grep到底做了什么。对多个文件进行迭代是grep的工作。它不需要多个文件吗?那么,您真正想做什么呢?它在不引用变量的情况下工作,cat也可以正常工作,除非您没有尝试;-)