-
Linux grep查找文件中的关键字
2018-08-29 14:03:43一、查看文件追加的含有关键字的内容 tail -f xxxxx.log | grep keyword 二、查看文件含有关键字的内容 cat xxx.log | grep keyword ...三、统计文件中关键字出现的次数 cat xxx.log | grep-o keyword | wc -l ...Linux grep 命令用于查找文件里符合条件的字符串。grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。
-r 是递归查找
-n 是显示行号
-R 查找所有文件包含子目录
-i 忽略大小写
---xargs配合grep查找
find -type f -name '*.php'|xargs grep 'message'
一、查看文件追加的含有关键字的内容
tail -f xxxxx.log | grep keyword
二、查看文件含有关键字的内容
cat xxx.log | grep keyword
三、统计文件中关键字出现的次数
cat xxx.log | grep -o keyword | wc -l
四、查看当前文件夹中包含某字符的文件
grep -r 'XXX' ./
-
Linux命令-查找文件中的关键字
2020-03-03 15:42:16分情况考虑: 1、如果是用vi或vim打开文件了,查找方法是: 在命令行模式下输入"/关键字" ...3、 如果是在某个目录下的多个文件中查找内容中包含的关键字,查找方法是: grep -r "关键字" 目录 ...分情况考虑:
1、如果是用vi或vim打开文件了,查找方法是:
在命令行模式下输入"/关键字"
2、如果文件是在当前文件夹目录下,且没有打开,查找方法是:
cat 文件名 | grep "关键字"
3、 如果是在某个目录下的多个文件中查找内容中包含的关键字,查找方法是:
grep -r "关键字" 目录
-
python查找文件中的关键字并打印出该行_搜索文本文件并在Python中打印相关行?...
2020-12-23 13:22:45How do I search a text file for a key-phrase or keyword and then print the line that key-phrase or keyword is in?解决方案searchfile = open("file.txt", "r")for line in searchfile:if "searchphrase" in ...How do I search a text file for a key-phrase or keyword and then print the line that key-phrase or keyword is in?
解决方案searchfile = open("file.txt", "r")
for line in searchfile:
if "searchphrase" in line: print line
searchfile.close()
To print out multiple lines (in a simple way)
f = open("file.txt", "r")
searchlines = f.readlines()
f.close()
for i, line in enumerate(searchlines):
if "searchphrase" in line:
for l in searchlines[i:i+3]: print l,
print
The comma in print l, prevents extra spaces from appearing in the output; the trailing print statement demarcates results from different lines.
Or better yet (stealing back from Mark Ransom):
with open("file.txt", "r") as f:
searchlines = f.readlines()
for i, line in enumerate(searchlines):
if "searchphrase" in line:
for l in searchlines[i:i+3]: print l,
print
-
查找文本文件中的关键字
2017-04-12 13:51:28查找文本文件中的关键字,说白了就是以文本文件作为输入,进行字符串匹配,找返回其第一次出现的下标位置。但是由于数据是以文本文件的形式作为输入的,如何存储和进行匹配就成为了一个问题。下面以两种方法来介绍...查找文本文件中的关键字,说白了就是以文本文件作为输入,进行字符串匹配,找返回其第一次出现的下标位置。但是由于数据是以文本文件的形式作为输入的,如何存储和进行匹配就成为了一个问题。下面以两种方法来介绍如何操作。注:本文中采用的字符串匹配算法只是普通的字符串匹配算法,重点在对文件处理和分块查找。一、蛮力法这种方法非常简单,把文件中的所有数据输入到一个字符数组中,然后以数组作为主串,关键字为模式串,进行字符串匹配即可。但是这里有一个问题,就是字符数组要多大才合适?由于不同的文件的数据量可能差别非常大,所以我们应该根据文件的大小来动态分配字符数组来存储主串。即我们现在的问题变为如何获得文件的大小。文件的大小可以用如下的方法来获得,首先打开文本文件,保存其文件位置,然后把文件指针定位到文件的末尾,获得其偏移量,然后再把文件指针恢复到原先即可。恢复文件指针是为了不让该调用对文件的其他操作产生影响,从外部看来这个操作调用前与调用后文件的状态并没有变化过。其现实代码如下,返回文件所占的字符总数:- int GetFileLength(ifstream &inputFile)
- {
- //保存文件当前位置
- streampos pos = inputFile.tellg();
- //定位到文件尾
- inputFile.seekg(0, ios::end);
- //返回文件尾的偏移量,即文件的大小
- int length = inputFile.tellg();
- //返回到文件先前的位置
- inputFile.seekg(pos);
- return length;
- }
则实现字符串匹配的函数如下:- int IndexInFile(const char *fileName, const char *keyWord)
- {
- //以只读方式,打开文件fileName
- ifstream inputFile(fileName);
- if(!inputFile)
- {
- //打开文件失败
- cerr<<"error: unable to open input file: "
- <<fileName<<endl;
- return -1;
- }
- //获得文件的长度,即字节数,并开劈一个同样大小的数组保存文件数据
- int length = GetFileLength(inputFile);
- char *text = new char[length+1];
- //把文件的内容讲到数组中
- inputFile.read(text, length);
- inputFile.close();
- text[length] = '\0';
- //进行模式串匹配,并返回结果
- int index = IndexOf(text, length, keyWord, strlen(keyWord));
- delete []text;
- return index;
- }
- int IndexOf(const char *text, int textSize,
- const char *match, int matchSize)
- {
- for(int i = 0; i <= textSize - matchSize; ++i)
- {
- int j = 0;
- while(j < matchSize && match[j] == text[i+j])
- ++j;
- //所有的字符都与文本中的一致,则匹配成功
- if(j == matchSize)
- return i;
- }
- //匹配失败
- return -1;
- }
其代码非常简单,不再多说了。二、分治法注意,这里主要是用到了把文件分成若干大小相同的块,并对各个块进行字符串匹配的方法来处理,并不是指字符串匹配算法使用了分治的思想。由于文件的数据可能非常巨大,一次性地把文件的所有内容读入到内存时,有时是不可能的,而且这样做也没有什么必要,因为我们要查找的串很可能就在文件的前面部分,而我们却把一个文件的所有内容调入到内存中,浪费了大量的内存空间,而且效率不高。所以我们应该把文件进行分块处理,每次从文件中读取一定的字符到缓冲区中,进行处理。其实现方法如下:首先把开文件,每次从文件读取指定个数的字符到buffer中,然后以buffer中的字符作为主串,关键字作为模式串进行字符串匹配,若匹配成功把返回其下标,若匹配不成功,则把下标值累加上读到缓冲区中字符的个数,并继续从文件中读取字符到buffer中,继续对buffer进行字符串匹配,直到找到关键字,或文件结束。这个方法不用把文件的所有内容调入内存中,而是每次都从内存读入一个buffer的内容,可以减少内存的开销,不论文件有多大都可行。然而这个方法的难点在哪里呢,难点就要当关键字在两个缓冲区之间时该如何识别和处理。下面说说我的想法,为了方便解说,我们假设buffer的大小为6,要查找的关键字为defg,文件的内容为abcdefghijk,我们每次从文件中读取5个字符到buffer中(第6个字符为'\0'),为abcde,可以看到我们要查找的字符串只有一部分在buffer中,它们被分为了两个部分。首先我们判断当在buffer上查找不成功,是否是由于所有的字符都匹配,但是模式串还没匹配完,主串却已经到了尽头,若是,把把之前与模式串匹配的部分字符复杂到buffer的前面,然后再从文件中输入数据,并放到其后面。在这个例子中,就是把de复制到buffer的前面,再从文件中读取数据到de后面的buffer中,读入完毕后,buffer的数据变成defgh,然后再对其进行匹配,即可匹配成功。其实现代码如下:- int IndexInFile(const char *fileName, const char *keyWord)
- {
- //以只读方式,打开文件fileName
- ifstream inputFile(fileName);
- if(!inputFile)
- {
- //打开文件失败
- cerr<<"error: unable to open input file: "
- <<fileName<<endl;
- return -1;
- }
- int keySize = strlen(keyWord);//关键字的长度
- int index = 0; //记录关键字首次出现的位置
- int lastMatch = 0;//记录最后一次匹配的位置
- const int bufferSize = 5;
- char buffer[bufferSize + 1];
- while(!inputFile.eof())
- {
- //把最后一次比较配置的字符复制到最前面
- WriteEndToBegin(buffer, bufferSize, lastMatch);
- //读入数据到缓冲区中lastMatch后的位置中
- inputFile.read(buffer + lastMatch,
- bufferSize - lastMatch);
- buffer[bufferSize] = '\0';
- cout<<buffer<<endl;
- int thisIndex = IndexOf(buffer, bufferSize,
- keyWord, keySize, lastMatch);
- if(thisIndex != -1)
- {
- //若查找成功,则下标值为之前查找过的字符数加上此次查找的字符数
- index += thisIndex;
- return index;
- }
- else
- {
- //若查找不成功,则加上新放入到缓冲区的字符数
- index += (bufferSize - lastMatch);
- }
- }
- return -1;
- }
- int IndexOf(const char *text, int textSize,
- const char *match, int matchSize,
- int &lastMatch)
- {
- for(int i = 0; i < textSize; ++i)
- {
- lastMatch = 0;
- while(lastMatch < matchSize && match[lastMatch] == text[i+lastMatch])
- ++lastMatch;
- //所有的字符都与文本中的一致,则匹配成功
- if(lastMatch == matchSize)
- return i;
- //所有的字符都匹配,但是模式串还没匹配完,主串已经到了尽头
- if(i + lastMatch == textSize)
- break;
- }
- //匹配失败
- return -1;
- }
- void WriteEndToBegin(char *text, int textSize, int writeCount)
- {
- //把字符数组中最后writeCount个字符写到最前面
- for(int i = 0; i < writeCount; ++i)
- {
- text[i] = text[textSize - writeCount + i];
- }
- }
代码分析:这里主要解析一下IndexOf函数中的lastMatch参数,该参数记录了主串中与模式串匹配的字符的个数。当IndexOf函数返回-1时,它尤其有用,因为它让我们知道,在buffer中,有多少个字符已经与模式串(关键字)匹配了,在上面的例子中,就是de两个字符,则其值为2,所以把buffer中最后的两个字符复制到了其前面。同时还要注意,buffer的大小一定要大小模式串的长度,不然的话,buffer会因为装不下一个模式串而出错。在代码中为了演示而把buffer的大小定为6(5+1),但是在使用时应该把它改变成你想要的大小,通常256或512是一个合适的值。三、复杂度分析两个算法的时间复杂度无为O(n*m),n为文件的字符数,m为关键字的字符数(即模式串的字符数)。空间复杂度第一个算法为O(n),第二个算法为O(1),因为不论文件多大,缓冲区的大小都是确定的。源代码可以点击这里下载:PS:本人成为了CSDN2013博客之星候选人之一,如果你觉得本人写的博客还可以,请投我一票,支持一下我,我的投票地址是: -
查找文件 和 文件中的关键字
2011-09-05 10:28:26查找目录下中包含关键字的文件 find /home/zhichi/report/dcdayrpt -name "*.sql" -print 参考文章 ... 查找单个文件中的关键字 cat dcdayrpt.sql|grep r... -
Ubuntu 在文件夹下查找文本文件中的关键字
2019-04-30 12:25:27有时候在 Ubuntu 的命令行里,需要在一堆文本文件中查找特定的关键字, 一个一个文件打开找很麻烦的,这里介绍一个在文件夹下查找关键字的命令。 find path -name 'file_name' | xargs grep 'key_words' 比如在... -
linux 文件查找指定文件中包含关键字的行信息
2018-11-10 14:53:57grep 查找关键字(可以带通配符) 文件名称 如 grep '登陆成功' log.log 通配符查找 -
在本路径和其子路径下查找文件中包含关键字的文件
2014-01-23 16:00:31find . -type f -exec grep -nH -i ping {} \; | cut -d ':' -f 1 | sort -u -
linux系统的vi编辑器中如何查找文件内容(关键字)
2018-10-04 12:04:45选择文件,编辑模式进入...按下”/“键,这时在状态栏(也就是屏幕左下脚)就出现了 “/” 然后输入你要查找的关键字敲回车就可以了。 找到相关文字以后: (1)按下小写n,向下查找 (2)按下大写N,向上查找... -
从文件中查找关键字算法
2019-09-26 09:39:40// (1)源文件为一个txt文档,内容为符号串;...// (3)依据关键字文件中的关键字在源文件中进行检索判断,得到关键字 #include"stdio.h" #include"string.h" #include"malloc.h" #define B... -
在文本文件中查找关键字
2013-12-18 00:17:08在文件中查找指定的关键字,采用了两种不同的方法实现,一种一次读入所有的数据,一种是使用缓冲区,多次读入数据到缓冲区中进行字符串匹配。 -
linux根据文件中的关键字查找对应的文件名称
2019-11-28 15:29:15在当前目录下查找包含test_key关键字的文件: find . -name '*' -type f | xargs grep "test_key"| awk -F : '{ print $1 }' | uniq -
python查找文件夹txt中关键字数量_python获取txt文件中关键字的数量
2021-01-14 22:36:42缘起:开发人员需要tomcat中一个项目在一个月的访问请求量,因其他原因只剩下查找tomcat请求日志的方法获取,刚好最近在学习python,于是就用python摸索了下;大体思路:1.把相应tomcat的日志文件拷到有python环境的... -
超大文件中查找关键字
2015-08-20 12:05:00请设计算法,可以快速的从文件中查找指字关键字的记录。 因为已经排好序了,可以使用 二分查找方法检索。 又因为文件过于庞大,可以将文件File分成1000份子记录集即读入10000次,每次读入10亿/10000条记录; 每次 ... -
grep检索关键字的命令_文件中查找关键字“ ”命令 grep
2020-12-20 07:42:26” 当前目录下 关键字为'COMPILE'sudo grep -i 'COMPILE' ltls.c // 在ltls.c文件中找 关键字为'COMPILE'用法: grep [选项]...模式 [文件]...在每个文件中查找样式或标准输入。PATTERN 默认的是一个基本的正则表达式... -
python查找文件夹txt中关键字数量_用python获取txt文件中关键字的数量
2021-02-10 16:31:36缘起:开发人员需要tomcat中一个项目在一个月的访问请求量,因其他原因只剩下查找tomcat请求日志的方法获取,刚好最近在学习python,于是就用python摸索了下;大体思路:1.把相应tomcat的日志文件拷到有python环境的... -
eclipse查找多种类型文件中的关键字
2019-10-07 21:51:59转载于:https://www.cnblogs.com/gwxppg/p/11388237.html -
从文件中查找关键字算法
2014-08-10 10:04:45// (1)源文件为一个txt文档,内容为符号串;... // (3)依据关键字文件中的关键字在源文件中进行检索判断,得到关键字 #include"stdio.h" #include"string.h" #include"malloc.h" #define BUFLEN 20480 #define M -
Linux 查找目录中含有关键字的文件并打印文件名
2015-05-27 19:27:16命令如下: find -type f -print | xargs grep "include" | awk '{gsub(":"," ");print $1}' | uniq -c 查找文件->过滤文件名->去重 列出文件中出现关键字的次数和文件名 -
linux下如何查找文本中的关键字
2020-06-11 14:36:43用Vim打开文件后,直接输入 /关键字 并回车,定位到第一个关键字,之后通过n向下查找,通过N向上查找 方法二 ?content 用Vim打开文件后,直接输入 ?关键字 并回车,定位到最后一个关键字,之后通过n向上查找,通过N... -
【Linux】查找文件中关键字
2021-03-22 09:05:56情况a:a:a: 已使用vim打开文件,命令行模式下输入"/关键字" 情况b:b:b: 文件在当前目录下没有打开,cat 文件名 | grep "关键字" ...情况c:c:c: 在某个目录下的多个文件中查找,grep -r "关键字" 目录 -
Linux shell中在vim打开的文件中查找关键字
2019-04-16 14:09:26linux shell中使用vi命令打开文本文件后,如果需要查找字符,可在normal模式下直接按“/”进入查找模式,输入要查找的字符并按下回车,vim会跳到第一个匹配的位置。 按n查找下一个,按Shift+n查找上一个。 其他... -
在指定目录下的文件中查找关键字
2014-08-19 17:44:36############################################################ # File: py_search.py - 查找...# - 遍历目录和搜索文件中的关键字 # Date: 2014/08/19 # By : LinJK ############################################ -
linux所有文件中查找关键字的命令
2017-02-14 20:54:00grep192.168.1.1*-r 在所有文件中查找192.168.1.1 转载于:https://www.cnblogs.com/fdd566/p/6399216.html