在文本文件中查找特定单词

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在文本文件中查找特定单词相关的知识,希望对你有一定的参考价值。

我在不同的子目录中有许多文本文件,因此每个文件的文件扩展名均为“ .pro”。

每个文件包含一行或多行,其中出现文本“ PRO <name>”或“ Function <name>”。<name>之后是逗号,后跟变量。

我想生成一个由两列组成的列表:

  • 第一列:完整文件名(具有完整路径)

  • 第二列:“ PRO <name>”或/和“功能<name>

对于下面的两个示例文件/脚本,结果为:

<full path>read_scenes_out.pro  PRO READ_SCENES_CLA
<full path>read_scenes_out.pro  PRO PRO READ_TAU_IN
<full path>read_scenes_out.pro  FUNCTION READ_HRIT
<full path>read_scenes_in.pro   PRO READ_SCENES_FLG
<full path>read_scenes_in.pro   PRO READ_SCENES_ELEV
<full path>read_scenes_in.pro   PRO READ_TAU_IN
<full path>read_scenes_in.pro   FUNCTION READ_HRIT2

由于我是Linux的初学者,所以我自己无法解决此问题。唯一的小小的成功是两个发现了如何在所有子目录中列出pro文件的所有完整路径:

查找。 | grep“ .pro” |排序-z

也许可以与that answer结合使用。


两个示例文件(“ ...”是用于编程代码的占位符:

  • 文件名1名为“ read_scenes_out.pro”]

    PRO READ_SCENES_CLA,ICLA,INDATE = INDATE

    ...

    结束

    PRO READ_TAU_IN,TAU,INFILE = INFILE

    ...

    结束

    FUNCTION READ_HRIT,插槽,ChannelId,计数,pgm = pgm

    ...

    结束


  • 文件名2名为“ read_scenes_in.pro”]

    PRO READ_SCENES_FLG,NTEST,INDIR = INDIR,INDATE = INDATE

    ...

    结束

    PRO READ_SCENES_ELEV,IELEV,INDIR = INDIR

    ...

    结束

    PRO READ_TAU_IN,TAU,INFILE = INFILE

    ...

    结束

    FUNCTION READ_HRIT2,插槽,ChannelId,计数,pgm = pgm

    ...

    结束

答案

尝试类似的东西

find . -name '*.pro' \
  -exec grep -Eo '(PRO|FUNCTION)[ ]+[^ ,]+' /dev/null  +

两个字符类[...]中的空格均由空格和制表符组成。

grep输出的文件名分隔符是冒号;如果很重要,则不难通过简单的sed后处理步骤来更改此设置。或从grep切换到Awk,以更好地控制输出的生成方式。

以上是关于在文本文件中查找特定单词的主要内容,如果未能解决你的问题,请参考以下文章

尝试在单独的文本文件中查找单词

linux 上查找包含特定文本的所有文件

在文本文件中查找单词

计算特定单词在 C++ 文本文件中出现的次数

根据文本文件的名称查找和替换文本文件中的单词

使用批处理删除文本文件中特定单词之前的文本