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

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

在 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

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

建议你这样试试看:

使用python的方式实现。

在你想要到倒序的linux文件夹位置。新建一个py文件(命令 vi reverse.py)

将代码复制上去。然后保存。

# coding=utf-8

import sys

def checkStr(str_source):

return sum(map(lambda check: '/'.count(check), str_source))

def sortByLen(s):

return len(s)

if __name__ == '__main__':

with open(sys.argv[1], 'r') as f:

total_list = f.readlines()  # 遍历文件 生成列表

total_list.sort(key=sortByLen, reverse=True)

total_list.sort(key=checkStr, reverse=True)

with open(sys.argv[2], 'w') as b:

for info in total_list:

b.write(info)

if info[-1] != '\n':

b.write('\n')

保存完成后,在本文件夹中 运行

python3  reverse.py 000文件夹绝对路径列表.txt 新的倒序文件夹名字.txt                     命令。去查看新的txt文件。就是你想要的倒序文件。

具体效果截图

注意事项:1.确定linux系统中有安装python3  在linux系统执行python3 命令,或者百度 很简单就可以测试. 2.记住复制上去的代码必须要符合python的缩进。

试试,如果好用,麻烦采纳,谢谢。

先以a.txt为例:

awk -v RS="" '{ 

n = split($0,a,"《[^》]+》")

for(i=2i<ni+=2)

    print "《keywords》"a[i]"《/keywords》" 

}' a.txt >>./newfile/a.txt

这样就行了。

为了可读性,我将一条awk语句写成了多行。

实际测试结果如下:

解说:

RS=""

将awk的记录分隔符设置为空(默认是换行符),即将整个a.txt文本看做一条记录。

n = split($0,a,"《[^》]+》")

以正则"《[^》]+》"匹配的内容作为分隔符,对文本内容进行分割并将分割结果存入数组a,分割出的数目(数组大小)即为split函数的返回值n。这里暂且不对该正则做过多解释,否则喧宾夺主,有需要请追问,我再补充。

for(i=2i<ni+=2)

    print "《keywords》"a[i]"《/keywords》"

打印数组下标为偶数的元素并在首尾分别加上关键字标记以还原。数组下标从1开始。

其他文件可作相同处理。如果文件较多,你可以搞个循环去做。这个应该不难。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7309453.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-04
下一篇2023-04-04

发表评论

登录后才能评论

评论列表(0条)

    保存