我是靠谱客的博主 忧伤流沙,最近开发中收集的这篇文章主要介绍Linux与Bash课程(grep sed awk 三剑客)grepsedawk,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

grep

grep定义

根据用户指定的模式(pattern)对目标文本进行过滤,显示被模式匹配到的行

grep命令形式

grep [OPTIONS] PATTREN [FILE…]
pattern为正则表达式

选项

语法说明
-v显示不被pattern匹配到的行
-i忽略字符大小写
-n显示匹配的行号
-c统计匹配的行数
-o仅显示匹配到的字符串
-E使用ERE,相当于egrep

练习

1.查找文件file.txt内容包含root的行号

grep -n root file.txt

2.查找文件file.txt内容不包含root的行号

grep -vn root file.txt

3.查找以S开头的行

grep -n ^s file.txt

4.查找以n结尾的行

grep -n n$ file.txt

sed

sed定义

sed是流编辑器,一次处理一行内容

sed处理流程

在这里插入图片描述

命令形式

sed [-hn…] [-e< script>][-f< script FILE>][FILE]
-h:显示帮助
-n:仅显示script处理后的结果
-e< script>:以选项中指定的script来处理输入的文本文件
-f< script>:以选项中指定的script文件来处理输入的文本文件

常用动作

语法语义示例示例解释
a新增sed -e ‘4 a newline’在第四行后新增加一行“newline”的文字
c取代sed -e ‘2,5c No 2-5 number’将第2,5行内容换为“No 2-5 number”
d删除sed -e ‘2,5d’将第2,5行内容删除掉
i插入sed -e ‘2i newline’在第2行前面插入一行“newline”的文字
p打印sed -n ‘/root/p’两个“/”中间夹的是正则,p代表打印处来
s取代sed -e ‘s/old/new/g’用后面的“new”取代前面的“old”,g表示全局,全部替换

上述对的增删插入等操作都不会对原文件进行改变!!
如果直接修改文件内容的话:

sed -i 's/root/hello/g' test.txt

awk

awk定义

把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行后续处理

处理流程

在这里插入图片描述

命令形式

awk 'pattern+action'[FILEnames]

-pattern:正则表达式
-action:对匹配到的内容执行的命令(默认为输出每行内容)

常用参数

FILENAME :awk浏览的文件名
BEGIN:处理文本之前要执行的操作
END:处理文本之后要执行的操作
FS:设置输入域分隔符,等价于命令行 -F选项
NF:浏览记录的域的个数(列数)
NR:已读的记录数(行数)
OFS:输出域分隔符
ORS:输出记录分隔符
RS:控制记录分隔符
$0:整条记录
$1:表示当前行的第一个域…以此类推

练习

搜索/etc/passwd有root关键字的所有行,并显示对应的shell

awk -F:'/root/{print $7}' /etc/passwd

打印/etc/passwd/的第二行信息

awk -F:'NR==2{print $0}' /etc/passwd

使用begin加入标题

awk 'BEGIN {print "BEGIN","BEGIN"}{print $1,$2}' /etc/passwd

自定义分隔符

echo “111 222|333 444|555 666”|awk 'BEGIN{RS="|"}{PRINT $0}'

最后

以上就是忧伤流沙为你收集整理的Linux与Bash课程(grep sed awk 三剑客)grepsedawk的全部内容,希望文章能够帮你解决Linux与Bash课程(grep sed awk 三剑客)grepsedawk所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部