Linux awk grep sed


Linux中的Grep,Awk和Sed命令之间有什么区别?

在Linux中使用grep命令

Grep命令用于查找文件中的特定模式,并输出包含搜索模式的所有结果。另一方面,Awk也用于在文件中搜索某些模式,但会继续在模式匹配上执行某些任务。可以同时使用Grep和awk来缩小搜索增强结果的范围。Grep是用于快速搜索匹配模式的简单工具,但是awk更像是一种编程语言,用于处理文件并根据输入值生成输出。sed命令对修改文件最有用。它搜索匹配的模式并替换它们并输出结果。
在Linux中使用Grep命令
Grep命令用于查找文件中的特定模式并显示与该模式匹配的所有字段。搜索的模式通常是正则表达式。
在我的示例中,我有一个名为linuxmi的文件,如下所示:
linuxmi@linuxmi:~/www.linuxmi.com$ cat linuxmi.txt
在这里插入图片描述

要在文件中输出每个包含“linuxmi”一词的字段:
linuxmi@linuxmi:~/www.linuxmi.com$ grep -i “linuxmi” linuxmi.txt
在这里插入图片描述

上面命令中的“ -i”告诉grep命令忽略任何区分大小写的命令。
“ -c”输出文件中匹配模式出现次数的计数。
linuxmi@linuxmi:~/www.linuxmi.com$ grep -c “linuxmi” linuxmi.txt
在这里插入图片描述

要从包含特定模式的目录中的所有文件中搜索,我们使用’*’。它显示了特定的文件和匹配结果
linuxmi@linuxmi:~/www.linuxmi.com$ grep “linuxmi” *
在这里插入图片描述

要仅输出包含匹配模式的文件,我们使用“ -l”
在这里插入图片描述

如果您知道文件名可以输出所有匹配项,则还可以指定文件名。
grep “linuxmi” test test1 test2
匹配文件中的整个单词。默认情况下,即使在子字符串中找到了Grep,也会输出所有出现的某种特定模式。为了仅匹配整个单词,我们使用“ -w”标志
linuxmi@linuxmi:~/www.linuxmi.com$ grep -w “linuxmi” linuxmi.txt
在这里插入图片描述

要在搜索中包含子目录,请使用“ -r”,如下所示:
linuxmi@linuxmi:~/www.linuxmi.com$ grep -r “linuxmi” *
仅输出匹配的模式。Grep显示包含匹配模式的整个句子。我们只能使用’-o’字符串来显示搜索模式。
linuxmi@linuxmi:~/www.linuxmi.com$ grep -o “linuxmi” linuxmi.txt
在这里插入图片描述

带数字的输出是使用’-n’的匹配模式。这将显示文件中匹配模式所在的特定数字计数。
linuxmi@linuxmi:~/www.linuxmi.com$ grep -n “linuxmi” linuxmi.txt
在这里插入图片描述

反转匹配以使用’-v’显示不匹配输入模式的输出。在这种情况下,我们将输出不包含单词“linuxmi”的其他任何内容。
linuxmi@linuxmi:~/www.linuxmi.com$ grep -v “linuxmi” linuxmi.txt
在这里插入图片描述

匹配以某个字符串开头的所有字段,例如,输出所有以单词“sat”开头的字段
在这里插入图片描述

匹配以给定字符串结尾的行。“ ” 正 则 表 达 式 表 示 行 的 结 尾 , 可 用 于 匹 配 以 特 定 字 符 串 结 尾 的 行 。 在 本 例 中 , 我 们 注 意 匹 配 以 “ 0 ” 结 尾 的 行 。 l i n u x m i @ l i n u x m i :   / w w w . l i n u x m i . c o m ”正则表达式表示行的结尾,可用于匹配以特定字符串结尾的行。在本例中,我们注意匹配以“ 0”结尾的行。 linuxmi@linuxmi:~/www.linuxmi.com 0linuxmi@linuxmi: /www.linuxmi.com grep “0$” linuxmi.txt
在这里插入图片描述

显示匹配前后的行数
-A - 指定匹配后要显示的行数
-B - 指定要显示的行数
-C - 指定匹配之前和之后要显示的行数
使用“ -e”在同一行中指定多个匹配模式
linuxmi@linuxmi:~/www.linuxmi.com$ grep -e “linuxmi” -e “ubuntu” -e “fedora” linuxmi.txt
在这里插入图片描述

为了将grep输出限制在行数以内,我们使用’ -m ’
linuxmi@linuxmi:~/www.linuxmi.com$ grep -m1 “linuxmi” linuxmi.txt
Manny linuxmi account 49000
linuxmi@linuxmi:~/www.linuxmi.com$ grep -m2 “linuxmi” linuxmi.txt
Manny linuxmi account 49000
tarun linuxmi sales 15000
在这里插入图片描述

在Linux中使用awk命令

Awk命令更多是用于处理数据和生成报告的脚本语言。它不需要任何编译,并且用户可以使用数字函数,变量,字符串函数和逻辑运算符。它使您能够以语句形式编写简单有效的程序,以在文件中搜索特定模式,并在找到匹配项时执行操作。
当使用’ awk '时,我们将花括号括起来。模式和动作都形成规则,整个awk程序都用单引号引起来。
如何在Linux中使用AWK命令

默认情况下,Awk命令用于打印文件的内容。在本例中,没有指定模式,因此操作应用于文件的每一行。
linuxmi@linuxmi:~/www.linuxmi.com$ awk ‘{print}’ linuxmi.txt
在这里插入图片描述

例如,要打印与给定模式匹配的行,让我们打印其中包含单词“linuxmi”的所有行。
linuxmi@linuxmi:~/www.linuxmi.com$ awk ‘/linuxmi/’{print}’ linuxmi.txt
在这里插入图片描述

Awk用于将一行分割成多个字段并打印出内容。让我们打印linuxmi.txt文件中行的第一部分和第二部分。
linuxmi@linuxmi:~/www.linuxmi.com$ awk ‘{print $1,$2}’ linuxmi.txt
在这里插入图片描述

注意 0 输 出 整 行 。 N R − 打 印 行 以 及 行 号 。 l i n u x m i @ l i n u x m i :   / w w w . l i n u x m i . c o m 0输出整行。 NR - 打印行以及行号。 linuxmi@linuxmi:~/www.linuxmi.com 0NRlinuxmi@linuxmi: /www.linuxmi.com awk ‘{print NR,$0}’ linuxmi.txt
在这里插入图片描述

也可以用于指定从某个数字打印到另一个数字。让我们显示从第3行到第6行。
NF - 输出每个记录(行)中包含的字段数
linuxmi@linuxmi:~/www.linuxmi.com$ awk ‘NR3, NR6 {print NR,$0}’ linuxmi.txt
$ NF - 打印最后一列
linuxmi@linuxmi:~/www.linuxmi.com$ awk ‘{print NF}’ linuxmi.txt
OFS - 输出字段分隔符–用于指定输出值的分隔符。
linuxmi@linuxmi:~/www.linuxmi.com$ awk ‘OFS="/" {print $1,$4}’ linuxmi.txt
Awk BEGIN和END规则

BEGIN规则应该在任何文本处理之前执行一次,并且在执行其他任何操作之前先执行。
添加模式
大于的值的输出。例如,在我们的文件中,最后一个字段表示薪水数字,我们只需要在值大于35000时输出
linuxmi@linuxmi:~/www.linuxmi.com$ awk ‘$NF>=35000 {print $1,$4}’ linuxmi.txt
内置函数

awk带有内置函数,例如数值,如下所示
linuxmi@linuxmi:~/www.linuxmi.com$ awk ‘BEGIN{print sqrt(400)}’
20
Awk脚本

如果发现自己编写了复杂的awk命令,则可以选择将它们放在脚本文件(.awk)中并从那里运行它们。

在Linux中使用SED命令

SED是流编辑器(stream editor)的缩写。它可以用于执行不同的功能,例如搜索,查找和替换,插入和删除。但是,查找和替换很常见,您无需打开文件即可替换单词。

将测试文件中的“linuxmi”一词替换为“xxvi”并输出结果:
linuxmi@linuxmi:~/www.linuxmi.com$ sed ‘s/linuxmi/xxvi/’ linuxmi.txt

为了替换每次出现,我们在表达式的末尾添加“ g”,如下所示
linuxmi@linuxmi:~/www.linuxmi.com$ sed ‘s/linuxmi/xxvi/g’ linuxmi.txt

要仅替换特定数量的出现次数,请在’g’处指定数字。例如,最多替换第四行:
linuxmi@linuxmi:~/www.linuxmi.com$ sed ‘s/linuxmi/xxvi/4’ linuxmi.txt

要从某个特定位置替换为文件的其余部分,请指定以数字开头的数字和’g’来表示文件的全部或其余部分。
linuxmi@linuxmi:~/www.linuxmi.com$ sed ‘s/linuxmi/xxvi/4g’ linuxmi.txt

要仅替换特定行,请在下面的第三行中指定要替换的文件行。
linuxmi@linuxmi:~/www.linuxmi.com$ sed ‘3 s/linuxmi/xxvi/’ linuxmi.txt

要仅打印替换的行而不是打印所有文件内容:
linuxmi@linuxmi:~/www.linuxmi.com$ sed -n ‘s/linuxmi/xxvi/p’ linuxmi.txt

从某一行开始更换,例如,从第3行到最后
linuxmi@linuxmi:~/www.linuxmi.com$ sed ‘3,g s/linuxmi/xxvi/’ linuxmi.txt

使用SED删除文件的行。例如,要删除文件的第5行:
linuxmi@linuxmi:~/www.linuxmi.com$ sed ‘5d’ linuxmi.txt

要删除最后一行:
linuxmi@linuxmi:~/www.linuxmi.com$ sed ‘$d’ linuxmi.txt

从第n行开始删除到最后,例如,从第3行到最后:
linuxmi@linuxmi:~/www.linuxmi.com$ sed ‘3,$d’ linuxmi.txt

要删除模式匹配文件:
linuxmi@linuxmi:~/www.linuxmi.com$ sed ‘/pattern/d’ linuxmi.txt

总结

这就是是我们有关如何在Linux中使用Grep,Awk和Sed命令的指南。我希望它能提供很多信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值