linux如何实现,对某个文本循环查找多个字符串,并输出所在行的内容?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux如何实现,对某个文本循环查找多个字符串,并输出所在行的内容?相关的知识,希望对你有一定的参考价值。

假设有一个search.txt 文本文件:里面有5个单词
word
list
hello
good
bad
另外一个文本文件all.log

如何实现:从all.log 选出含有word、list、hello、good、bad所在的行文本。

参考技术A 在 Linux 中,您可以使用 grep 命令来实现这个功能。该命令可以用来在文本文件中搜索特定的文本模式。
例如,要查找在文件 all.log 中含有单词 word 的行,您可以使用以下命令:
grep word all.log

如果要查找多个单词,您可以将它们放在一个字符串中,然后将该字符串作为 grep 命令的参数。例如,要查找在文件 all.log 中含有单词 word、list、hello、good 或 bad 的行,您可以使用以下命令:
grep "word|list|hello|good|bad" all.log

请注意,单词之间使用 | 符号隔开,表示“或”的意思。
此外,您还可以使用 -f 选项来指定要查找的单词列表所在的文件,这样就可以避免在命令行中手动输入单词列表。例如,如果要查找的单词列表保存在文件 search.txt 中,您可以使用以下命令:
grep -f search.txt all.log

希望这些信息能够帮助您解决问题。

06-Linux文本处理-grep

  • grep命令在一个或多个文件中查找某个字符模式。
  • 如果这个模式中包含空格,就必须用引号把它括起来。
grep Tom /etc/passwd
  • grep 将在文件中查找/etc/passwd 中查找模式 Tom。
  • 结果如下:
    • 查找成功,文件中相应行会显在屏幕上
    • 没有找到指定的模式,就不会有任何输出
    • 指定的文件不是一个合法的文件,屏幕上就会显示报错信息
    • 发现了要查找的模式, grep 就返回退出状态 0,表示成功,
    • 没找到要查找的模式,返回的退出状态为 1,
    • 找不到指定文件时,退出状态将是 2。
ps -ef | grep root
  • ps 命令的输出被送到 grep,然后所有包含 root 的行都被打印在屏幕上。

grep选项

选 项 功 能
-E 如果加这个选项,那么后面的匹配模式就是扩展的正则表达式,也就是 grep -E = egrep
-i 比较字符时忽略大小写区别
-w 把表达式作为词来查找, 相当于正则中的"<...>"(...表示你自定义的规则)
-x 被匹配到的内容,正好是整个行,相当于正则"^...$"
-v 取反,也就是输出我们定义模式相反的内容
-c count.统计,统计匹配结果的行数,主要不是匹配结果的次数,是行数。
-m 只匹配规定的行数,之后的内容就不在匹配了
-n 在输出的结果里显示行号,这里要清楚的是这里所谓的行号是该行内容在原文件中的行号,而不是在输出结果中行号
-o 只显示匹配内容, grep 默认是显示满足匹配条件的一行,加上这个参数就只显示匹配结果,比如我们要匹配一个 ip 地址,就只需要结果,而不需要该行的内容。
-R 递归匹配。如果要在一个目录中多个文件或目录匹配内容,则需要这个参数
-B 输出满足条件行的前几行,比如 grep -B 3 "aa" file 表示在 file 中输出有 aa 的行,同时还要输出 aa 的前 3 行
-A 这个与-B 类似,输出满足条件行的后几行
-C 这个相当于同时用-B -A,也就是前后都输出

例子

显示包含#的行,并在前面添加行数
 grep -n ‘#‘ /etc/ssh/sshd_config
显示包含#的行,并关闭大小写敏感性
grep -i ‘#‘ /etc/ssh/sshd_config
显示sshd配置文件,排除空行和以#号开头的
cat /etc/ssh/sshd_config |grep -v ‘^$‘ |grep -v ‘^#‘
显示包含s内容的所有文件名
grep -l ‘s‘ /etc/ssh/*
统计包含有#的行数
grep -c ‘#‘ /etc/ssh/sshd_config
只显示包含Port词的行
 grep -w ‘Port‘ /etc/ssh/sshd_config

以上是关于linux如何实现,对某个文本循环查找多个字符串,并输出所在行的内容?的主要内容,如果未能解决你的问题,请参考以下文章

Linux的awk、grep、sed工具,实现文本查找、编辑 、格式化

如何在Linux下查找文件内容包含某个特定字符串的文件

C#在文本中查找字符串

06-Linux文本处理-grep

Python使用while循环查找字符串索引

linux 如何查看某个文本内 包含某个字段的最后十行