grep
grep软件在编辑与编务工作中的应用
作者:车忱管娜李馨馨
来源:《职业·下旬》2012年第06期
在编辑与编务工作中,如果能灵活运用各种软件,就会显著提高效率。
下面介绍一下grep 软件在这方面的应用。
grep本是UNIX/Linux中的命令行程序(类似于DOS程序),现在有多个Windows版本。
它能够利用称为“正则表达式”的技术,输出文件中具有某种规律(或称模式)的文本行。
这种规律可以是一个简单的字符串,如“111”或“computer”表示含有“111”或“computer”的行;也可以是复杂的字符串,如“1.3”可以匹配含有113,123,1_3(即在1和3之间有任意一个字符)的行,因为“.”表示匹配任意单个字符;而“12*3”可以匹配含有13,123,1223,12223(即在1和3之间有任意个2)的行,此处“*”表示“零个或多个前面的单个字符或字符组合”。
一、快速剔除书目中的三级标题
有一批教材(70多本)的目录保存在同一个纯文本文件C:\contents.txt中,现在要利用该文件制作一份书目。
图书目录一般都有三级标题,而在制作书目时,只需要一级和二级标题。
该文件中,标题前面没有空行。
三级标题序号的形式有三种,第一种形如“1.1.1”,即数字之间有一个英文句号;第二种形式如“111”,即数字之间有一个很宽的空格;第三种形式如“1.2.1”,即数字之间有一个英文句号紧跟一个空格。
章号和节号最多可能为两位数,高位均不为零,而小节号只有一位数,不可能为零。
如果删掉以这三种形式开头的文本行,也就完成了剔除三级标题的工作。
这个工作很难用Word完成,手工处理又相当耗时。
而使用grep软件就可以快速达到目的。
上述三级标题序号的第一种形式可以表示为“一个或两个数字之后紧跟一个英文句号再紧跟一个或两个数字再紧跟一个英文句号再紧跟一个数字”。
而经过分析,第二种形式中的“很宽的空格”与第三种形式中的“一个英文句号紧跟一个空格”实际上都是两个“不可打印的”字符,因此后两种形式可以用同一种模式表示,即“一个或两个数字之后紧跟两个不可打印的字符再紧跟一个或两个数字再紧跟两个不可打印的字符再紧跟一个数字”。
而每个标题各占一行,便于使用grep软件。
了解了这些信息,就可以使用grep软件剔除三级标题了。
首先要下载grep。
grep包含在名为CygwinPortable的软件包中,可以在浏览器中输入以下链接下载该软件:
http://cdnetworks-kr-
/project/cygwinportable/cygwinportable/CygwinPortable%200.2/CygwinPortable-0.
2.zip
解压后进入其文件夹,双击其中的CygwinPortable.exe图标,会出现一个类似于DOS窗口的界面,在其中可以输入很多命令,包括grep。
grep的命令格式如下:
$ grep'匹配模式'原始文件
匹配模式前后均有空格,并且要加上单引号。
模式内部不能有空格(除非要匹配空格)。
匹配后的结果将输出到屏幕上。
“$”是显示在屏幕上的提示符,不必输入。
原始文件的内容不受影响。
例如,书目中每本书的书号都是一个五位的数字,且单独放在一行,前面没有空格。
要输出这些书号,则可以输入以下命令:
$ grep'^[0-9]\{5\}'contents.txt
按下回车键,屏幕上将输出所有书号,每行一个。
“^”出现在匹配模式的开头,表示从文本行的开头进行模式匹配。
如果漏掉这个符号,则会输出所有包括五位数字的行(如某行文字中含有“80486”,则该行也会输出)。
方括号表示匹配字符列表中的任意一个字符,如[0-9]表示匹配任意一个阿拉伯数字,而[a-zA-Z]表示匹配任意一个大写或小写英文字母。
\{n\}表示欲匹配字符的个数,此处为5。
若不希望输出匹配某个模式的文本行,例如要删除所有书号,则可在模式前加入-v选项,即:
$ grep -v'^[0-9]\{5\}'contents.txt
将输出不带书号的目录。
通常,输出结果需要进一步处理,因此应将其用“>”保存在文件中,命令格式如下:
$ grep'匹配模式'原始文件 > 结果文件
例如
$ grep'^[0-9]\{5\}'contents.txt > result.txt
即可将所有书号保存在result.txt文件中,每个书号一行。
若result.txt已经存在,则以前的内容将全被删掉。
结果文件名称前如不加路径,则表示保存在当前路径。
下面只要用两步操作就可以完成书目处理。
(1)执行如下命令:
$ cd c:
$ grep -v'^[1-9][0-9]*[^[:print:]]\{2\}[1-9][0-9]*
[^[:print:]]\{2\}[1-9]'contents.txt > step1.txt
若“^”是方括号中的第一个字符,则不再表示匹配文本行的开头,而是对其后面的模式取相反结果。
[:print:]表示可打印字符。
因此[^[:print:]]\{2\}表示匹配两个不可打印字符。
注意单引号括住的部分没有空格。
打开step1.txt,可以看到,序号形如“111”和“1. 1. 1”的三级标题都被删掉了。
(2)执行如下命令:
$ grep -v'^[1-9][0-9]*\.[1-9][0-9]*\.[1-9][0-9]*'step1.txt > step2.txt
此处,用“\.”匹配英文句号,因为单个“.”可以匹配任意字符,而前面加上反斜线(称为转义符)后,就只能匹配英文句号。
打开step2.txt,可以看到,序号形如“1.1.1”的三级标题也都被删掉了,任务完成。
二、查找稿件中的不规范术语
grep还可以从一个文件中获取欲匹配的模式,并且一次搜索多个文件。
命令如下:
$ grep –f 含匹配模式的文件原始文件
例如,某位作者为其编写的C++图书提供了随书源文件。
部分文件的代码注释中使用了不规范的术语,如,把“面向对象”写成了“物件导向”,把“内存”写成了“记忆体”。
现在要确定哪些文件含有不规范术语。
如果逐一查找,比较费时。
此时可以把不规范的术语写在一个名为jargons.txt的文件中,每行一个。
将文件放在源文件所在目录,假设是C:\source。
然后执行如下命令:
$ cd c:
$ cd source
$ grep –f jargons.txt *.cpp
屏幕上就会输出所有含有不规范术语的源文件名。
请注意:在进行以上输入时,要在英文状态下进行,并区分大小写(文中涉及操作均为小写)。
而且grep只能操作纯文本文件。
由于版式限制,一些操作排成了两行(实际上均应为一行)。
参考文献:
[1]陈向群,等译. Brian W Kernighan, Rob Pike. UNIX编程环境 [M].北京:机械工业出版社,1999.。
grep参数详解
grep参数详解Grep是UNIX/Linux中最常用的命令,它是一种文本搜索工具,它可以在文件系统中快速搜索文本字符串。
Grep有许多参数,每个参数都可以改变grep的行为,因此,在使用grep时,了解这些参数是非常重要的。
在本文中,我们将详细介绍grep的参数,对一般用户和系统管理员有很大的帮助。
Grep的基本用法:Grep的基本用法是使用grep <pattern> <files>的形式,其中<pattern>表示要搜索的字符串,<files>表示要搜索的文件或目录。
Grep会隐式地把标准输入作为一个文件,这允许用户从管道中输入数据,并使用grep进行搜索,例如echohello world“ | grep world。
Grep主要参数:1. -i : 不区分大小写的搜索,即搜索的字符串无论大写或小写,grep都会返回匹配的结果。
2. -v :反搜索,即搜索的字符串不包含在搜索结果中的行,grep 就会返回这行。
3. -c :计匹配行的数量,不会返回匹配的行,只返回匹配行的数目。
4. -w :配全词搜索,即只有搜索字符串作为一个单词出现,grep 才会返回匹配的行。
5. -x :行匹配,即只有整行全部符合搜索字符串,grep才会返回匹配的行。
6. -n :索行号,即会在每一行匹配的前面显示行号。
7. -E :展正则表达式搜索,默认情况下grep只支持普通的正则表达式,-E参数支持扩展的正则表达式语法。
8. -l :出文件名,即只返回匹配文件的文件名,而不返回匹配的行。
9. -L :之,即只返会不匹配文件的文件名,而不返回不匹配的行。
10. -r :归搜索,即以当前文件夹为根,搜索其子目录。
使用Grep的实例:1.计文件中某个字符串的出现次数:grep -c hello file.txt2. 从文件中删除包含某个字符串的行:grep -v hello file.txt > file_new.txt3.文件中包含某个单词的行复制到另一个文件:grep -w hello file.txt > file_new.txt4.归搜索当前目录和其子目录的文件,找出所有包含某个字符串的文件:grep -rl hello .总结:Grep是Unix/Linux中一个非常强大的文本搜索工具,它有许多参数可以改变Grep的行为,可以帮助我们快速搜索文本字符串。
grep命令的参数-i,表示模式匹配时区分大小写
一、grep命令的基本概念grep命令是Linux系统中常用的文本搜索工具,用于在文件或标准输入中搜索指定的模式,并将匹配的行打印出来。
它可以根据用户提供的正则表达式进行模式匹配,从而达到快速定位目标文本内容的目的。
grep命令的参数很多,其中-i参数表示模式匹配时不区分大小写。
二、grep命令的常见用法grep命令通常用于查找包含特定字符或模式的行,并将其输出到标准输出。
其基本用法如下:```grep [option] pattern [file]```其中,option是命令的参数,pattern是要匹配的模式,file是要进行搜索的文件。
三、-i参数的作用在使用grep命令进行模式匹配时,默认情况下是区分大小写的,也就是说大写和小写字母是不同的。
而使用了-i参数之后,grep命令将不再区分大小写,即不管是大写还是小写都可以匹配到相应的内容。
四、使用实例假设有一个文件test.txt,内容如下:```Hello, world!hello, world!HELLO, WORLD!```我们希望查找包含hello的行,可以使用以下命令:```grep -i "hello" test.txt```使用了-i参数之后,不再区分大小写,上述命令将匹配到所有包含hello的行,输出如下:```Hello, world!hello, world!```如果不使用-i参数,则只会匹配到第二行。
五、-i参数的注意事项使用-i参数可以方便地进行不区分大小写的模式匹配,但也要注意一些问题。
如果模式本身包含了大小写字母,那么-i参数将不再起作用,需要注意模式的书写方式。
另外,使用-i参数可能会对性能产生一定影响,因为要进行更多的匹配工作。
六、总结grep命令是Linux系统中非常常用的文本搜索工具,而-i参数可以方便地进行不区分大小写的模式匹配,提高了搜索的灵活性和通用性。
在实际使用过程中,合理地应用-i参数可以提高工作效率,但也需要注意一些使用注意事项。
grep检索变量
grep检索变量一、grep命令的基本用法grep命令的基本语法是:grep [选项] 模式文件名1.1 搜索单个文件我们可以使用grep命令来搜索单个文件中的特定内容。
例如,我们有一个名为"file.txt"的文本文件,其中包含着大量的文本内容。
我们想要查找其中包含"变量"这个词的行,可以使用以下命令:grep "变量" file.txt该命令会在文件中搜索包含"变量"的行,并将这些行打印输出。
1.2 搜索多个文件除了搜索单个文件,我们还可以使用grep命令来搜索多个文件中的内容。
例如,我们有一个目录"dir",其中包含着多个文本文件。
我们想要在这些文件中查找包含"变量"这个词的行,可以使用以下命令:grep "变量" dir/*该命令会在"dir"目录下的所有文件中搜索包含"变量"的行,并将这些行打印输出。
1.3 忽略大小写有时候,我们在搜索文本时可能会忽略大小写。
为了实现这一点,我们可以使用"-i"选项。
例如,我们想要查找包含"变量"的行,不论大小写,可以使用以下命令:grep -i "变量" file.txt该命令会在文件中搜索包含"变量"的行,并将这些行打印输出,不论大小写。
二、grep命令的高级技巧除了基本的用法,grep命令还提供了一些高级的技巧,帮助我们更加灵活地进行文本搜索。
2.1 使用正则表达式正则表达式是一种强大的文本模式匹配工具,可以用来在文本中匹配复杂的模式。
grep命令支持使用正则表达式进行搜索。
例如,我们想要查找以"变量"开头的行,可以使用以下命令:grep "^变量" file.txt该命令会在文件中搜索以"变量"开头的行,并将这些行打印输出。
grep 高级用法
grep 高级用法grep 是一个强大的文本搜索工具,它使用正则表达式来搜索文本,并打印匹配的行。
以下是一些grep 的高级用法:1、递归搜索:在目录及其所有子目录中的文件里搜索文本。
bashgrep -r "pattern" /path/to/directory/2、显示匹配行及其行号:bashgrep -n "pattern" filename3、只显示匹配的文件名:bashgrep -l "pattern" /path/to/directory/*4、显示不匹配的行:bashgrep -v "pattern" filename5、使用扩展正则表达式(例如:使用?, +, {}, | 等):bashgrep -E "pat(tern1|tern2)" filename6、显示匹配项周围的行(例如,显示匹配项前后的2行):bashgrep -A 2 -B 2 "pattern" filename7、计数匹配的行数:bashgrep -c "pattern" filename8、高亮匹配的文本(通常需要配合--color):bashgrep --color=auto "pattern" filename9、从文件中读取模式:假设你有一个文件patterns.txt,里面包含了很多要搜索的模式,每行一个。
你可以这样使用:bashgrep -f patterns.txt filename10、使用Perl 兼容的正则表达式(PCRE):这提供了更多的功能和灵活性。
例如,递归地搜索目录中所有的.txt 文件,找到包含数字的行:bashgrep -rP '\d' /path/to/directory/*.txt11、反向引用:当使用-P (Perl兼容的正则表达式) 时,你可以使用反向引用来匹配重复的模式。
grep命令格式
grep命令是在Unix和类Unix操作系统中用于搜索文本模式的工具。
它的基本格式为:
grep [选项] 模式[文件]
-选项:用于指定grep命令的一些参数,以调整搜索的行为。
-模式:要搜索的文本模式,可以是字符串或正则表达式。
-文件:要搜索的文件的列表。
如果省略文件名,则grep将从标准输入中读取。
以下是一些常见的grep选项:
--i:忽略大小写。
--n:显示匹配行的行号。
--r/-R:递归搜索目录及其子目录中的文件。
--v:显示不匹配的行。
--c:显示匹配的行数而不显示具体内容。
--A/-B/-C:分别显示匹配行的前/后/前后若干行。
一些例子:
1. 搜索包含关键词"pattern" 的行:
grep "pattern" file.txt
2. 搜索并忽略大小写:
grep -i "pattern" file.txt
3. 显示匹配的行号:
grep -n "pattern" file.txt
4. 递归搜索目录中的文件:
grep -r "pattern" /path/to/directory
5. 显示不匹配的行:
grep -v "pattern" file.txt
这只是grep 命令的一小部分用法,更多选项和用法可以通过查阅grep 的帮助文档(man grep)或在线资源来学习。
grep命令用法及参数
grep命令用法及参数详解一、简介grep命令是Linux下的一个强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
二、基本语法grep [选项] '搜索模式' 文件名三、主要选项-i:忽略大小写-v:显示不包含匹配文本的所有行(反向匹配)-n:显示匹配行及其行号-c:计算匹配行数-l:显示包含匹配文本的文件名-L:显示不包含匹配文本的文件名-w:匹配整个单词-x:匹配整行文本-r:递归搜索子目录中的文件-E:将搜索模式视为扩展正则表达式-F:将搜索模式视为固定字符串,而非正则表达式四、常用示例1. 在文件中搜索特定字符串:grep 'search_string' filename2. 在多个文件中搜索特定字符串:grep 'search_string' file1 file2 file33. 在文件中搜索特定字符串并忽略大小写:grep -i 'search_string' filename4. 在文件中搜索特定字符串并显示行号:grep -n 'search_string' filename5. 在文件中搜索特定字符串并显示不包含该字符串的所有行:grep -v 'search_string' filename6. 在文件中搜索特定字符串并计算匹配行数:grep -c 'search_string' filename7. 在多个文件中搜索特定字符串并显示包含该字符串的文件名:grep -l 'search_string' file1 file2 file38. 在多个文件中搜索特定字符串并显示不包含该字符串的文件名:grep -L 'search_string' file1 file2 file39. 在文件中搜索整个单词:grep -w 'search_word' filename10. 在文件中搜索整行文本:grep -x 'line_text' filename五、递归搜索示例在目录及其子目录中搜索特定字符串:grep -r 'search_string' directory_name六、总结grep命令是一个强大的文本搜索工具,它有许多选项可以用来控制搜索的行为和结果的输出。
grep命令参数及用法
grep命令参数及用法1. 简介:grep 是一种强大的命令行工具,用于在文件中查找特定字符串。
grep 命令可以用来在文件中查找一个或多个匹配字符串,并将包含该字符串的所有行打印出来。
grep 命令是 Linux 系统中的一个常用命令,可以在终端中使用。
2. 命令格式grep [option] pattern [file…]3. 参数- -i:忽略大小写。
- -v:仅显示不匹配的行。
- -n:在输出中显示行号。
- -r:递归查找子目录。
- -c:仅显示匹配行的数目。
- -o:仅显示匹配的字符串,而不是整行。
- -w:指定字符串为单词,即仅匹配整个单词,而不是部分单词。
- -e:指定要查找的字符串。
- -f:从指定文件中读取要查找的字符串。
- --color=auto:将匹配的字符串高亮显示。
- --exclude=pattern:排除匹配的文件。
- --include=pattern:仅包含匹配的文件。
- --exclude-dir=pattern:排除匹配的子目录。
- --include-dir=pattern:仅包含匹配的子目录。
- --group-separator:在输出中使用指定的分隔符。
- --no-group-separator:在输出中不使用分隔符。
- --null:在输出中使用 null 作为行分隔符。
- --max-count:仅显示前几个匹配项。
4. 实例4.1 在文件中查找特定字符串命令:grep 'string' file说明:在文件 file 中查找包含‘string’ 子字符串的行,并将其输出到屏幕上。
例子:在文件 example.txt 中查找‘apple’:```grep 'apple' example.txt```4.2 忽略大小写4.3 显示匹配行的行号4.4 仅显示包含字符串的行数4.6 将查找结果输出到文件4.8 配合使用多个参数例子:在目录 /var/log 中递归查找所有包含‘error’ 子字符串的日志并显示行号:```grep -rni 'error' /var/log```5. 总结grep 命令是 Linux 系统中非常常用的命令之一,通过使用它,你可以很方便地在文件中查找特定字符串,并将结果输出到屏幕上。
grep查找文件内容
grep查找文件内容Grep查找文件内容。
在日常工作中,我们经常需要查找文件中特定的内容,以便进行进一步的处理或分析。
而在Linux系统中,可以通过grep命令来实现这一功能。
grep是一种强大的文本搜索工具,它可以在文件中查找指定的字符串,并将包含该字符串的行打印出来。
本文将介绍grep命令的基本用法和一些常见的技巧,帮助大家更好地利用grep 来查找文件内容。
基本用法。
grep命令的基本语法如下:grep [option] pattern [file]其中,option表示grep命令的选项,pattern表示要查找的字符串,file表示要在其中查找的文件。
如果不指定file参数,则grep将从标准输入中读取数据进行搜索。
例如,要在文件example.txt中查找字符串"hello",可以使用以下命令:grep "hello" example.txt。
这将输出example.txt中包含"hello"的所有行。
如果要忽略大小写,可以使用-i选项:grep -i "hello" example.txt。
此外,grep还支持使用正则表达式进行模式匹配。
例如,要查找以"hello"开头的行,可以使用以下命令:grep "^hello" example.txt。
高级技巧。
除了基本的用法外,grep还支持一些高级的技巧,帮助我们更精确地查找文件内容。
1. 查找多个文件。
如果要在多个文件中查找特定的内容,可以使用通配符来指定文件名。
例如,要在所有以.txt结尾的文件中查找"hello",可以使用以下命令:grep "hello" .txt。
这将输出所有以.txt结尾的文件中包含"hello"的行。
2. 递归搜索。
如果要在某个目录及其子目录中查找文件内容,可以使用-r选项进行递归搜索。
grep命令实例详解 -回复
grep命令實例详解-回复grep命令实例详解grep命令是Linux系统中用于搜索指定模式或关键字的功能强大的命令。
它能够递归地搜索文件和文件夹,并快速返回所有匹配的结果。
本文将详细介绍grep命令的使用方法,以及几个实例来帮助读者更好地理解和掌握这个命令。
1. grep命令的基本用法grep命令的基本用法是:grep [选项] 模式文件名其中,选项和模式是可选的,文件名是要搜索的文件或文件夹的名称。
下面是一些常用的选项:- -i:忽略大小写;- -r:递归搜索子文件夹;- -v:返回不匹配的结果。
这些选项可以根据实际需要进行组合使用,以满足不同的搜索需求。
2. 实例1:简单搜索文件中的关键字假设有一个名为example.txt的文件,内容如下:This is an example file.It contains some text.We will use grep to search for a keyword.现在我们想要搜索文件中包含关键字"example"的行。
执行以下命令:grep "example" example.txt命令的输出结果如下:This is an example file.可以看到,grep命令成功地找到了包含关键字"example"的行,并返回了匹配的结果。
3. 实例2:搜索多个文件grep命令不仅可以搜索单个文件,还可以搜索多个文件。
假设有两个文件example.txt和another.txt,内容和上面的示例相同。
我们可以使用以下命令来搜索两个文件:grep "example" example.txt another.txt输出结果如下:example.txt: This is an example file.another.txt: This is an example file.可以看到,grep命令找到了包含关键字"example"的行,并返回了匹配的结果。
linux中grep文件内容
linux中grep文件内容一、grep命令介绍grep命令是一种基于行的文本搜索工具,它可以在文件中查找匹配的文本,并将匹配的行输出到屏幕或者文件中。
grep命令的基本语法如下:```grep [选项] 模式 [文件名]```其中,选项用于指定grep命令的一些行为,模式是要查找的文本模式,文件名是要搜索的文件名。
二、grep命令的选项grep命令提供了许多选项,用于控制搜索的行为。
下面是一些常用的选项:1. -i,忽略大小写:使用该选项后,grep命令会忽略模式的大小写区分。
2. -v,反向匹配:使用该选项后,grep命令会输出不匹配指定模式的行。
3. -r,递归搜索:使用该选项后,grep命令会在指定目录及其子目录中递归搜索文件。
4. -n,显示行号:使用该选项后,grep命令会在匹配行前面显示行号。
5. -w,整词匹配:使用该选项后,grep命令会只匹配整个单词,而不是部分匹配。
三、grep命令的使用示例下面将介绍一些grep命令的使用示例,以帮助读者更好地理解grep命令的功能和使用方法。
1. 查找包含指定字符串的行假设我们有一个名为example.txt的文件,其中包含了一些文本内容。
我们可以使用grep命令查找包含指定字符串的行,如下所示:```grep "hello" example.txt```该命令将输出example.txt文件中包含"hello"字符串的行。
2. 忽略大小写进行匹配如果我们不想区分字符串的大小写,可以使用grep命令的-i选项,如下所示:```grep -i "hello" example.txt```该命令将输出example.txt文件中包含"hello"或"Hello"等字符串的行。
3. 反向匹配有时候我们需要查找不包含指定字符串的行,可以使用grep命令的-v选项,如下所示:```grep -v "hello" example.txt```该命令将输出example.txt文件中不包含"hello"字符串的行。
