Linux grep命令详解 Linux grep命令怎么用

grep指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为"-",则grep指令会从标准输入设备读取数据。

语法

grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>]

[-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]

参数:

  • -a或--text 不要忽略二进制的数据。
  • -A<显示列数>或--after-context=<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之后的内容。
  • -b或--byte-offset 在显示符合范本样式的那一列之前,标示出该列第一个字符的位编号。
  • -B<显示列数>或--before-context=<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前的内容。
  • -c或--count 计算符合范本样式的列数。
  • -C<显示列数>或--context=<显示列数>或-<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
  • -d<进行动作>或--directories=<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
  • -e<范本样式>或--regexp=<范本样式> 指定字符串做为查找文件内容的范本样式。
  • -E或--extended-regexp 将范本样式为延伸的普通表示法来使用。
  • -f<范本文件>或--file=<范本文件> 指定范本文件,其内容含有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每列一个范本样式。
  • -F或--fixed-regexp 将范本样式视为固定字符串的列表。
  • -G或--basic-regexp 将范本样式视为普通的表示法来使用。
  • -h或--no-filename 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
  • -H或--with-filename 在显示符合范本样式的那一列之前,表示该列所属的文件名称。
  • -i或--ignore-case 忽略字符大小写的差别。
  • -l或--file-with-matches 列出文件内容符合指定的范本样式的文件名称。
  • -L或--files-without-match 列出文件内容不符合指定的范本样式的文件名称。
  • -n或--line-number 在显示符合范本样式的那一列之前,标示出该列的列数编号。
  • -q或--quiet或--silent 不显示任何信息。
  • -r或--recursive 此参数的效果和指定"-d recurse"参数相同。
  • -s或--no-messages 不显示错误信息。
  • -v或--revert-match 反转查找。
  • -V或--version 显示版本信息。
  • -w或--word-regexp 只显示全字符合的列。
  • -x或--line-regexp 只显示全列符合的列。
  • -y 此参数的效果和指定"-i"参数相同。
  • --help 在线帮助。

 实例

1、在当前目录中,查找后缀有"test"字样的文件中包含"test"字符串的文件,并打印出该字符串的行。此时,可以使用如下命令:

grep test *file

结果如下所示:

$ grep test test* #查找后缀有“test”的文件包含“test”字符串的文件

testfile1:This a Linux testfile! #列出testfile1 文件中包含test字符的行

testfile_2:This is a linux testfile! #列出testfile_2 文件中包含test字符的行

testfile_2:Linux test #列出testfile_2 文件中包含test字符的行

2、以递归的方式查找符合条件的文件。例如,查找指定目录/etc/acpi 及其子目录(如果存在子目录的话)下所有文件中包含字符串"update"的文件,并打印出该字符串所在行的内容,使用的命令为:

grep -r update /etc/acpi

输出结果如下:

$ grep-r update /etc/acpi #以递归的方式查找“etc/acpi”

#下包含“update”的文件

/etc/acpi/ac.d/85-anacron.sh:# (Things like the slocate updatedb cause a lot of IO.) Rather than

/etc/acpi/resume.d/85-anacron.sh:# (Things like the slocate updatedb cause a lot of IO.) Rather than

/etc/acpi/events/thinkpad-cmos:action=/usr/sbin/thinkpad-keys--update

3、反向查找。前面各个例子是查找并打印出符合条件的行,通过"-v"参数可以打印出不符合条件行的内容。

查找文件名中包含test 的文件中不包含test 的行,此时,使用的命令为:

grep -v test*

结果如下所示:

$ grep-v test* #查找文件名中包含test 的文件中不包含test 的行

testfile1:helLinux!

testfile1:Linis a free Unix-type operating system.

testfile1:Lin

testfile_1:HELLO LINUX!

testfile_1:LINUX IS A FREE UNIX-TYPE OPTERATING SYSTEM.

testfile_1:THIS IS A LINUX TESTFILE!

testfile_2:HELLO LINUX!

testfile_2:Linux is a free unix-type opterating system.

时间: 2024-09-14 10:05:06

Linux grep命令详解 Linux grep命令怎么用的相关文章

Linux cd命令详解 Linux cd命令怎么用

其中 dirName 表示法可为绝对路径或相对路径.若目录名称省略,则变换至使用者的 home 目录 (也就是刚 login 时所在的目录). 另外,"~" 也表示为 home 目录 的意思,"." 则是表示目前所在的目录,".." 则表示目前目录位置的上一层目录. 语法 cd [dirName] dirName:要切换的目标目录. 实例 跳到 /usr/bin/ : cd /usr/bin 跳到自己的 home 目录 : cd ~ 跳到目前目录

Linux ftp命令详解 Linux ftp命令怎么用

FTP是ARPANet的标准文件传输协议,该网络就是现今Internet的前身. 语法 ftp [-dignv][主机名称或IP地址] 参数: -d 详细显示指令执行过程,便于排错或分析程序执行的情形. -i 关闭互动模式,不询问任何问题. -g 关闭本地主机文件名称支持特殊字符的扩充特性. -n 不使用自动登陆. -v 显示指令执行过程. 实例 例如使用ftp命令匿名登录ftp.kernel.org服务器,该服务是Linux 内核的官方服务器,可以使用如下命令: ftp ftp.kernel.

Linux zipinfo命令详解 Linux zipinfo命令怎么用

pnux zipinfo命令用于列出压缩文件信息,执行zipinfo指令可得知zip压缩文件的详细信息. 语法 zipinfo [-12hlmMstTvz][压缩文件][文件...][-x <范本样式>] 参数: -1 只列出文件名称. -2 此参数的效果和指定"-1"参数类似,但可搭配"-h","-t"和"-z"参数使用. -h 只列出压缩文件的文件名称. -l 此参数的效果和指定"-m"参数

Linux rm命令详解 Linux rm命令怎么用

Linux rm命令用于删除一个文件或者目录. 语法 rm [options] name... 参数: -i 删除前逐一询问确认. -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认. -r 将目录及以下之档案亦逐一删除. 实例 删除文件可以直接使用rm命令,若删除目录则必须配合选项"-r",例如: # rm  test.txt  rm:是否删除 一般文件 "test.txt"? y   # rm  homework   rm: 无法删除目录"home

Linux touch命令详解 Linux touch命令怎么用

Linux touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间.若文件不存在,系统会建立一个新的文件. ls -l 可以显示档案的时间记录. 语法 touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--help] [--version][文件或目录-] 参数说明: a 改变档案的读取时间记录. m 改变档案的修改时间记录. c 假如目的档案不存在,不会建立新的档案.与 --no-create 的效果一样.

Linux cp命令详解 Linux cp命令怎么用

Linux cp命令主要用于复制文件或目录. 语法 cp [options] source dest 或 cp [options] source... directory 参数说明: -a:此选项通常在复制目录时使用,它保留链接.文件属性,并复制目录下的所有内容.其作用等于dpR参数组合. -d:复制时保留链接.这里所说的链接相当于Windows系统中的快捷方式. -f:覆盖已经存在的目标文件而不给出提示. -i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y&quo

Linux more命令详解 Linux more命令怎么用

more最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似),使用中的说明文件,请按 h .  语法 more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..] 参数: -num 一次显示的行数 -d 提示使用者,在画面下方显示 [Press space to continue, 'q' to quit.] ,如果使用者按错键,则会显示 [Press 'h

Linux zip命令详解 Linux zip命令怎么用

zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有".zip"扩展名的压缩文件. 语法 zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期时间>][-<压缩效率>][压缩文件][文件...][-i <范本样式>][-x <范本样式>] 参数: -A 调整可执行的自动解压缩文件. -b<工作目录> 指定暂时存放

Linux dumpkeys命令详解 Linux dumpkeys命令怎么用

Linux dumpkeys命令用于显示键盘映射表,输出的内容可以被loadkeys命令识别,改变映射关系. 语法 dumpkey[选择参数] 参数说明: -i 驱动信息(键码范围.数量.状态键) -l 详细驱动信息 -n 十六进制显示 -f 显示全部信息 -1 分行显示按键组合 -S 设定输出格式(0:预设 1:完整 2:分行 3简单) --funcs-only 功能键信息 --keys-only 键组合信息 --compose-only 普通键信息 实例 显示功能键信息 # dumpkeys

Linux mv命令详解 Linux mv命令怎么用

语法 mv [options] source dest mv [options] source... directory 参数说明: -i: 若指定目录已有同名文件,则先询问是否覆盖旧文件; -f: 在mv操作要覆盖某已有的目标文件时不给任何指示; mv参数设置与运行结果 命令格式 运行结果 mv  文件名   文件名 将源文件名改为目标文件名 mv  文件名   目录名 将文件移动到目标目录 mv  目录名   目录名 目标目录已存在,将源目录移动到目标目录:目标目录不存在则改名 mv  目录