Linux grep命令(grep指令)grep --help各选项介绍(待更)

文章目录

  • `grep --help`
    • 英文
    • 中文
  • 使用示例
    • `-E, --extended-regexp`:此选项表示模式为扩展正则表达式。
    • `-F, --fixed-strings`:此选项表示模式被视为固定字符串而不是正则表达式。
    • `-G, --basic-regexp`:此选项表示模式为基础正则表达式。这是默认的模式类型。
    • `-P, --perl-regexp`:此选项表示模式为 Perl 正则表达式。这种类型的正则表达式更加强大和灵活。
    • `-e, --regexp=PATTERNS`:此选项允许你指定用于匹配的模式。当你的模式以“-”开头时,或者当你有多个模式需要匹配时,这个选项特别有用。
    • `-f, --file=FILE`:此选项允许你从文件中读取模式。
    • `-i, --ignore-case`:此选项使得匹配时忽略大小写。
    • `-w, --word-regexp`:此选项将模式视为单词,只有整个单词与模式匹配才算成功。
    • `-x, --line-regexp`:此选项表示整行必须与模式完全匹配才算成功。
    • `-z, --null-data`:此选项将使得数据行以0字节而非换行符结束。
    • `-s, --no-messages`:此选项会抑制错误信息。
    • `-v, --invert-match`:此选项会反转匹配,选择不匹配模式的行。
    • `-V, --version`:此选项会显示版本信息并退出。
    • `-m, --max-count=NUM`:此选项会在找到指定数量的匹配行后停止搜索。
    • `-b, --byte-offset`:此选项会在输出行前打印该行在输入文件中的字节偏移量。
    • `-n, --line-number`:此选项会在输出行前打印行号。
    • `-H, --with-filename`:此选项会在输出行前打印文件名。这在搜索多个文件时非常有用。
    • `-h, --no-filename`:此选项会在输出行前不打印文件名。这是默认的行为,当只搜索一个文件时。
    • `-o, --only-matching`:此选项会只显示匹配的部分,而非整行。
    • `-q, --quiet, --silent`:此选项会抑制所有正常的输出。它通常与其他命令一起使用,例如 `if` 语句,来检查某个模式是否存在。
    • `-L, --files-without-match`:此选项会打印出没有匹配到模式的文件名。
    • `-l, --files-with-matches`:此选项会打印出至少匹配到一次模式的文件名。
    • `-c, --count`:此选项会打印每个文件中匹配到模式的行数。
    • `-r, --recursive` 或 `-R, --dereference-recursive`:此选项会使得 `grep` 在目录以及其子目录中搜索文件。`-R` 选项还会跟踪符号链接。

grep --help

grep 是一个强大的文本搜索工具,它使用正则表达式来搜索与模式匹配的行,并打印出来。下面是使用文档的英文和中文翻译。

英文

root@ky:/userdata/testKYAI/kyai# grep --help
Usage: grep [OPTION]... PATTERNS [FILE]...
Search for PATTERNS in each FILE.
Example: grep -i 'hello world' menu.h main.c
PATTERNS can contain multiple patterns separated by newlines.Pattern selection and interpretation:-E, --extended-regexp     PATTERNS are extended regular expressions-F, --fixed-strings       PATTERNS are strings-G, --basic-regexp        PATTERNS are basic regular expressions-P, --perl-regexp         PATTERNS are Perl regular expressions-e, --regexp=PATTERNS     use PATTERNS for matching-f, --file=FILE           take PATTERNS from FILE-i, --ignore-case         ignore case distinctions in patterns and data--no-ignore-case      do not ignore case distinctions (default)-w, --word-regexp         match only whole words-x, --line-regexp         match only whole lines-z, --null-data           a data line ends in 0 byte, not newlineMiscellaneous:-s, --no-messages         suppress error messages-v, --invert-match        select non-matching lines-V, --version             display version information and exit--help                display this help text and exitOutput control:-m, --max-count=NUM       stop after NUM selected lines-b, --byte-offset         print the byte offset with output lines-n, --line-number         print line number with output lines--line-buffered       flush output on every line-H, --with-filename       print file name with output lines-h, --no-filename         suppress the file name prefix on output--label=LABEL         use LABEL as the standard input file name prefix-o, --only-matching       show only nonempty parts of lines that match-q, --quiet, --silent     suppress all normal output--binary-files=TYPE   assume that binary files are TYPE;TYPE is 'binary', 'text', or 'without-match'-a, --text                equivalent to --binary-files=text-I                        equivalent to --binary-files=without-match-d, --directories=ACTION  how to handle directories;ACTION is 'read', 'recurse', or 'skip'-D, --devices=ACTION      how to handle devices, FIFOs and sockets;ACTION is 'read' or 'skip'-r, --recursive           like --directories=recurse-R, --dereference-recursive  likewise, but follow all symlinks--include=GLOB        search only files that match GLOB (a file pattern)--exclude=GLOB        skip files that match GLOB--exclude-from=FILE   skip files that match any file pattern from FILE--exclude-dir=GLOB    skip directories that match GLOB-L, --files-without-match  print only names of FILEs with no selected lines-l, --files-with-matches  print only names of FILEs with selected lines-c, --count               print only a count of selected lines per FILE-T, --initial-tab         make tabs line up (if needed)-Z, --null                print 0 byte after FILE nameContext control:-B, --before-context=NUM  print NUM lines of leading context-A, --after-context=NUM   print NUM lines of trailing context-C, --context=NUM         print NUM lines of output context-NUM                      same as --context=NUM--color[=WHEN],--colour[=WHEN]       use markers to highlight the matching strings;WHEN is 'always', 'never', or 'auto'-U, --binary              do not strip CR characters at EOL (MSDOS/Windows)When FILE is '-', read standard input.  With no FILE, read '.' if
recursive, '-' otherwise.  With fewer than two FILEs, assume -h.
Exit status is 0 if any line (or file if -L) is selected, 1 otherwise;
if any error occurs and -q is not given, the exit status is 2.Report bugs to: bug-grep@gnu.org
GNU grep home page: <http://www.gnu.org/software/grep/>
General help using GNU software: <https://www.gnu.org/gethelp/>

中文

root@ky:/userdata/testKYAI/kyai# grep --help
用法:grep [选项]... 模式 [文件]...
在每个文件中搜索模式。
示例:grep -i 'hello world' menu.h main.c
模式可以包含由换行符分隔的多个模式。模式选择和解释:-E, --extended-regexp     模式是扩展正则表达式-F, --fixed-strings       模式是字符串-G, --basic-regexp        模式是基础正则表达式-P, --perl-regexp         模式是Perl正则表达式-e, --regexp=模式         使用模式进行匹配-f, --file=文件           从文件获取模式-i, --ignore-case         忽略模式和数据中的大小写区别--no-ignore-case      不忽略大小写区别(默认)-w, --word-regexp         只匹配整个单词-x, --line-regexp         只匹配整行-z, --null-data           数据行以0字节结束,而非新行杂项:-s, --no-messages         抑制错误消息-v, --invert-match        选择不匹配的行-V, --version             显示版本信息并退出--help                显示此帮助文本并退出输出控制:-m, --max-count=NUM       在选定的行后停止NUM-b, --byte-offset         与输出行一起打印字节偏移量-n, --line-number         与输出行一起打印行号--line-buffered       每行刷新输出-H, --with-filename       与输出行一起打印文件名-h, --no-filename         在输出时抑制文件名前缀--label=标签          使用标签作为标准输入文件名前缀-o, --only-matching       只显示匹配行的非空部分-q, --quiet, --silent     抑制所有正常输出--binary-files=类型   假设二进制文件是类型;类型是'binary', 'text','without-match'-a, --text                等同于 --binary-files=text-I                        等同于 --binary-files=without-match-d, --directories=动作    如何处理目录;动作是'read', 'recurse','skip'-D, --devices=动作        如何处理设备、FIFOs 和套接字;动作是'read''skip'-r, --recursive           像 --directories=recurse-R, --dereference-recursive  同样,但是跟踪所有符号链接--include=GLOB        只搜索匹配GLOB的文件(一个文件模式)--exclude=GLOB        跳过匹配GLOB的文件--exclude-from=FILE   跳过与文件中的任何文件模式匹配的文件--exclude-dir=GLOB    跳过匹配GLOB的目录-L, --files-without-match  只打印没有选定行的FILEs的名称-l, --files-with-matches  只打印有选定行的FILEs的名称-c, --count               每个文件只打印选定行的数量-T, --initial-tab         让制表符对齐(如果需要)-Z, --null                在文件名后打印0字节上下文控制:-B, --before-context=NUM  打印前NUM行的上下文-A, --after-context=NUM   打印后NUM行的上下文-C, --context=NUM         打印NUM行的输出上下文-NUM                      同 --context=NUM--color[=WHEN],--colour[=WHEN]       使用标记来突出显示匹配的字符串;WHEN是 'always', 'never','auto'-U, --binary              不在EOL(MSDOS/Windows)剥离CR字符当文件为'-'时,读取标准输入。如果没有文件,如果是递归的,则读取'.',否则读取'-'。如果文件少于两个,假设-h。
如果选择了任何行(或者如果-L则为文件),退出状态为0,否则为1;如果发生任何错误并且未给出-q,则退出状态为2。报告错误至:bug-grep@gnu.org
GNU grep主页:<http://www.gnu.org/software/grep/>
使用GNU软件的一般帮助:<https://www.gnu.org/gethelp/>

使用示例

-E, --extended-regexp:此选项表示模式为扩展正则表达式。

-E, --extended-regexpgrep 命令的一个选项,它告诉 grep 使用扩展正则表达式进行匹配。

在默认情况下,grep 使用基本正则表达式 (Basic Regular Expression, BRE)。而 -E 选项使得 grep 使用扩展正则表达式 (Extended Regular Expression, ERE)。

扩展正则表达式提供了更多的功能和灵活性。例如,你可以使用 | 字符来表示 “或” 运算,无需转义。在基本正则表达式中,你需要使用 \| 来表示 “或” 运算。

这是一些示例:

  • 匹配 “abc” 或 “def”:

    echo -e "abc\ndef" | grep -E 'abc|def'
    

    在这里插入图片描述

  • 匹配重复的单词(注意这里使用了括号和加号,这两个符号在基本正则表达式中都需要转义):

    echo "hello hello" | grep -E '(\b.+\b) \1'
    

    这个命令是在查找重复的单词。让我们分解一下这个命令:

    1. echo "hello hello":这个命令会输出字符串 “hello hello”。

    2. |:管道符号,它把前一个命令的输出作为后一个命令的输入。

    3. grep -E '(\b.+\b) \1':这个命令使用了扩展正则表达式来搜索模式。

      • \b 是一个单词边界。这意味着模式必须出现在单词的开始或结束位置。

      • . 匹配任何字符(除了换行符)。

      • + 表示前面的元素可以出现一次或多次。因此,.+ 匹配任意长度的单词。

      • (\b.+\b) 这个括号表示一个捕获组,它可以捕获匹配的文本以便稍后引用。在这里,它捕获了一个完整的单词,如:hello。

      • \1 是一个反向引用,它引用了第一个捕获组的内容。在这里,它引用了前面捕获的单词。

    所以,这个正则表达式的含义是:找到一个单词(由 \b.+\b 定义),然后找到一个空格,再找到和第一个单词完全相同的单词(由 \1
    定义)。如果输入的字符串满足这个条件,那么 grep 命令就会把这个字符串打印出来。

    在你给出的例子中,"hello hello" 符合这个条件,因为 “hello” 是一个单词,然后是一个空格,然后又是
    “hello”。所以 grep 命令会把整个字符串 “hello hello” 打印出来。

    在这里插入图片描述

  • .+.*的区别
    在正则表达式中,+* 都是数量词,用于指定前面的字符或组可以出现的次数。但它们有一个关键的区别:

    • * 表示前面的字符或组可以出现零次或多次。也就是说,即使前面的字符或组完全没有出现,匹配也会成功。

    • + 表示前面的字符或组必须至少出现一次。如果前面的字符或组没有出现,匹配就会失败。

    因此,当你将 .(匹配任意单个字符)与这两个数量词结合时:

    • .* 会匹配任意数量的任意字符,包括没有字符的情况(也就是空字符串)。

    • .+ 会匹配一个或更多的任意字符,但不会匹配空字符串。

    举个例子,假设我们有以下的输入:

    abcdef
    

    在这里,我们有三行:一行是 “abc”,一行是空行,一行是 “def”。

    如果我们运行 grep -E '.*',所有的三行都会被匹配,因为 .* 可以匹配任意字符(包括没有字符的情况)。

    但是,如果我们运行 grep -E '.+',只有 “abc” 和 “def” 这两行会被匹配,因为 .+ 必须匹配至少一个字符,所以它无法匹配空行。

-F, --fixed-strings:此选项表示模式被视为固定字符串而不是正则表达式。

echo -e "abc.def\nabc-def" | grep -F 'abc.def'

-G, --basic-regexp:此选项表示模式为基础正则表达式。这是默认的模式类型。

echo -e "abc\ndef" | grep -G 'abc'

-P, --perl-regexp:此选项表示模式为 Perl 正则表达式。这种类型的正则表达式更加强大和灵活。

echo -e "abc\ndef" | grep -P 'abc'

-e, --regexp=PATTERNS:此选项允许你指定用于匹配的模式。当你的模式以“-”开头时,或者当你有多个模式需要匹配时,这个选项特别有用。

grep -e '-abc' -e 'def' filename

-f, --file=FILE:此选项允许你从文件中读取模式。

grep -f patterns.txt filename

-i, --ignore-case:此选项使得匹配时忽略大小写。

echo -e "Abc\ndef" | grep -i 'abc'

-w, --word-regexp:此选项将模式视为单词,只有整个单词与模式匹配才算成功。

echo -e "abc def\nabcdef" | grep -w 'abc'

-x, --line-regexp:此选项表示整行必须与模式完全匹配才算成功。

echo -e "abc\ndef abc" | grep -x 'abc'

-z, --null-data:此选项将使得数据行以0字节而非换行符结束。

printf 'abc\0def' | grep -z 'abc'

-s, --no-messages:此选项会抑制错误信息。

grep -s 'abc' non_existent_file

-v, --invert-match:此选项会反转匹配,选择不匹配模式的行。

echo -e "abc\ndef" | grep -v 'abc'

-V, --version:此选项会显示版本信息并退出。

grep --version

-m, --max-count=NUM:此选项会在找到指定数量的匹配行后停止搜索。

echo -e "abc\nabc\ndef" | grep -m 1 'abc'

-b, --byte-offset:此选项会在输出行前打印该行在输入文件中的字节偏移量。

echo -e "abc\ndef" | grep -b 'def'

-n, --line-number:此选项会在输出行前打印行号。

echo -e "abc\ndef" | grep -n 'def'

-H, --with-filename:此选项会在输出行前打印文件名。这在搜索多个文件时非常有用。

grep -H 'pattern' file1 file2

-h, --no-filename:此选项会在输出行前不打印文件名。这是默认的行为,当只搜索一个文件时。

grep -h 'pattern' file

-o, --only-matching:此选项会只显示匹配的部分,而非整行。

echo "abc def" | grep -o 'abc'

-q, --quiet, --silent:此选项会抑制所有正常的输出。它通常与其他命令一起使用,例如 if 语句,来检查某个模式是否存在。

if echo "abc def" | grep -q 'abc'; then echo 'Pattern found!'; fi

-L, --files-without-match:此选项会打印出没有匹配到模式的文件名。

grep -L 'pattern' file1 file2

-l, --files-with-matches:此选项会打印出至少匹配到一次模式的文件名。

grep -l 'pattern' file1 file2

-c, --count:此选项会打印每个文件中匹配到模式的行数。

grep -c 'pattern' file

-r, --recursive-R, --dereference-recursive:此选项会使得 grep 在目录以及其子目录中搜索文件。-R 选项还会跟踪符号链接。

grep -r 'pattern' directory

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/633207.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Rust之旅 - Rust概念、Windows安装、环境配置

&#x1f339;作者主页&#xff1a;青花锁 &#x1f339;简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java微服务架构公号作者&#x1f604; &#x1f339;简历模板、学习资料、面试题库、技术互助 &#x1f339;文末获取联系方式 &#x1f4dd; 系列专栏目录 [Java项目…

【C++初阶】第二站:类与对象(上) -- 上部分

前言: C学习的第二站&#xff1a;类和对象(上)文章的上半部分,知识点:面向过程和面向对象初步认识、类的引入、类的定义、类的访问限定符及封装、类的作用域、类的实例化. 目录 面向过程和面向对象初步认识 类的引入 类的定义 类的访问限定符及封装 访问限定符 封装 类的…

深入理解Linux文件系统

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;晴る—ヨルシカ 0:20━━━━━━️&#x1f49f;──────── 4:30 &#x1f504; ◀️ ⏸ ▶️ ☰ &…

防火墙技术

防火墙&#xff08;英语&#xff1a;Firewall&#xff09;技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备&#xff0c;帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障&#xff0c;以保护用户资料与信息安全性的一种技术。 防火墙技术的功能主要在于及…

开发需求总结9-el-tree获取选中节点,节点全选时返回被全选子级的父节点,未全选则返回被选中的节点

目录 需求描述 代码实现&#xff1a; 需求描述 需要获取树组件选中的节点&#xff0c;假如父节点被选中&#xff08;该节点全选&#xff09;&#xff0c;即只返回父节点的数据&#xff0c;如父节点未被全选&#xff0c;则正常返回被选中节点的数据。 示例一&#xff1a; 如上图…

【学习记录24】vue3自定义指令

一、在单vue文件中直接使用 1、html部分 <template><divstyle"height: 100%;"v-loading"loading"><ul><li v-for"item in data">{{item}} - {{item * 2}}</li></ul></div> </template> 2、js…

基于YOLOv8深度学习的智能肺炎诊断系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

CentOS stream 9配置网卡

CentOS stream9的网卡和centos 7的配置路径&#xff1a;/etc/sysconfig/network-scripts/ifcfg-ens32不一样。 CentOS stream 9的网卡路径&#xff1a; /etc/NetworkManager/system-connections/ens32.nmconnection 方法一&#xff1a; [connection] idens32 uuid426b60a4-4…

2024 CKA 题库 | 11、创建 PVC

不等更新题库 文章目录 11、创建 PVC题目:考点&#xff1a;参考链接:解答:更换 context创建 pvc创建 pod修改 pvc 并记录 11、创建 PVC 题目: 设置配置环境&#xff1a; [candidatenode-1] $ kubectl config use-context ok8sTask 创建一个新的 PersistentVolumeClaim&#x…

SG-9101CGA(汽车+125°C可编程晶体振荡器)

SG-9101CGA是用于汽车CMOS输出的可编程晶体振荡器&#xff0c;彩用2.5 x 2.0 (mm)封装&#xff0c;0.67 MHz至170 MHz频率范围、工作温度范围为-40℃~125℃&#xff0c;符合车规级晶振&#xff0c;无铅&#xff0c;绿色环保&#xff0c;满足汽车工业标准&#xff0c;电源电压范…

【linux】粘滞位.yum

粘滞位 1.为什么我们普通用户可以删掉别人的文件&#xff08;包括root&#xff09;?合理吗&#xff1f; 2.删除一个文件和目标文件有关系吗&#xff1f; 没关系&#xff0c;和所处的目录有关系。 1.我们先以root身份创建一个目录&#xff0c;接着在这个目录下创建一个文件 2…

噪声的产生机制和来源

噪声广泛存&#xff0c;噪声按照噪声携带能量的强弱分为功率型噪声和信号型噪声&#xff0c;功率型噪声持续时间短&#xff0c;能量强&#xff0c;对设备的寿命具有很大的影响&#xff0c;而信号型噪声顾名思义来源于信号且作用于信号&#xff0c;本节简述噪声的产生机理和来源…

QtAV:基于Qt和FFmpeg的跨平台高性能音视频播放框架

目录 一.简介 1.特性 2.支持的平台 3.简单易用的接口 二.编译 1.下载依赖包 2.开始编译 2.1克隆 2.2修改配置文件 2.3编译 三.试用 一.简介 官网地址&#xff1a;http://www.qtav.org/ Github地址&#xff1a;https://github.com/wang-bin/QtAV 1.特性 ●支持大部分…

Windows 开启卓越性能模式

在powershell命令行中输入下面代码即可&#xff1a; powercfg -duplicatescheme e9a42b02-d5df-448d-aa00-03f14749eb61

机器学习--人工智能概述

人工智能概述 入门人工智能&#xff0c;了解人工智能是什么。为啥发展起来&#xff0c;用途是什么&#xff0c;是最重要也是最关键的事情。大致有以下思路。 人工智能发展历程机器学习定义以及应用场景监督学习&#xff0c;无监督学习监督学习中的分类、回归特点知道机器学习…

Producer源码解读

Producer源码解读 在 Kafka 中, 我们把产生消息的一方称为 Producer 即 生产者, 它是 Kafka 的核心组件之一, 也是消息的来源所在。它的主要功能是将客户端的请求打包封装发送到 kafka 集群的某个 Topic 的某个分区上。那么这些生产者产生的消息是怎么传到 Kafka 服务端的呢&a…

TypeScript依赖注入框架Typedi的使用、原理、源码解读

简介 typedi是一个基于TS的装饰器和reflect-metadata的依赖注入轻量级框架&#xff0c;使用简单易懂&#xff0c;方便拓展。 使用typedi的前提是安装reflect-metadata&#xff0c;并在项目的入口文件的第一行中声明import ‘reflect-metadata’&#xff0c;这样就会在原生的R…

【图解数据结构】深度解析时间复杂度与空间复杂度的典型问题

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;图解数据结构、算法模板 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 一. ⛳️上期回顾二. ⛳️常见时间复杂度计算举例1️⃣实例一2️⃣实例二3️⃣实例三4️⃣实例四5…

FPGA引脚选择(Select IO)--认知1

主要考虑功能角度&#xff08;速度&#xff0c;电平匹配&#xff0c;内部程序编写&#xff09;去找研究芯片内部资源 1. 关键字 HP I/O Banks, High performance The HP I/O banks are deisgned to meet the performance requirements of high-speed memory and other chip-to-…

参照oracle按名称排序,用js在前端对附件封装排序方法

此前因客户需求需要附件按照名称排序 而后台无法对单个文件夹做单独处理。虽可以在每次点击之后重新调用接口&#xff0c;再组装数据&#xff0c;但效率太低&#xff0c;且无须存储&#xff0c;而存储在当前文件夹的排序方法也需要更新。索性自己写了一个通用的方法。经测试排序…