【问题标题】:How to grep a pattern from a file如何从文件中grep模式
【发布时间】:2018-03-06 04:12:37
【问题描述】:

我想读取一个文件和里面的 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

这是我的代码。

谁能帮我解决这个问题

【问题讨论】:

  • 为什么要逐行做?你不能直接grep文件吗?就做grep "hi" testOne.sh demo.sh test.sh
  • 实际上它是一个日志文件,我需要读取和 grep 模式并逐个打印它
  • 你试过运行我提供给你的命令吗?
  • 我已经知道那个命令了。但是我已经将这些文件放在一个变量中并放入一个 forloop,正如您在我的代码中看到的那样
  • Echo 是,grep 无论如何。遍历多个文件是 grep 无论如何。而且它不需要多个文件吗?那么真正尝试做什么呢?

标签: linux shell


【解决方案1】:

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

文件的 for 循环太过分了,需要的资源比完成任务所需的资源多得多。

【讨论】:

    【解决方案2】:

    可以这样做,只需一个循环,所以我将您的代码更改为:

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

    【讨论】:

    • 它可以在不引用变量的情况下工作,并且 cat 也可以正常工作,除非你没有尝试过 ;-)
    猜你喜欢
    • 2011-10-25
    • 1970-01-01
    • 2015-06-12
    • 2014-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 2014-06-26
    相关资源
    最近更新 更多