侧边栏壁纸
博主头像
口鸟人 博主等级

言念君子 . 温其如玉

  • 累计撰写 39 篇文章
  • 累计创建 16 个标签
  • 累计收到 14 条评论

目 录CONTENT

文章目录

Linux: grep,sed,awk三剑客

koniaoer
2024-05-06 / 0 评论 / 0 点赞 / 95 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
本文最后更新于2024-05-06,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

grep 对文本内容进行过滤,筛选

作用:grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来

可以联合正则表达式使用 Linux 正则表达式(私有)-口鸟人 (koniaoer.top)

语法:grep [参数] [匹配模式] [file]

参数:

-i:忽略大小写进行匹配

-v:反向查找,只打印不匹配的行

-n:显示匹配行的行号

-r:递归查找子目录中的文件

-l:只打印匹配的文件名

-c:只打印匹配的行数

-E:支持扩展的正则表达式符号

-q:静默模式,不输出任何信息

grep -n "root" koniaoer.txt		#输出带有root的内容加行号
grep '^$' koniaoer.txt -n -v 	#排除空行,输出有用字符
grep '^#' koniaoer.txt -v		#排除注释,输出有用字符

sed 对文件或者数据流进行加工处理

作用:结合正则表达式对文件进行快速的增删改查,其中查询的功能中最常用的两大功能是过滤(过滤指定字符串),取行(取出指定行)

可以联合正则表达式使用 Linux 正则表达式(私有)-口鸟人 (koniaoer.top)

语法:sed [参数] [sed内置命令] [file]

参数:

-e 以选项中指定的script来处理输入的文本文件

-f 以选项中指定的script文件来处理输入的文本文件

-i 直接将修改结果写入文件,不用-i,sed修改的是内存数据

-h 显示帮助

-n 取消默认sed输出仅显示script处理后的结果

-V 显示版本信息

-r 支持正则表达式扩展

sed内置命令:

a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~

c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!

d :删除,因为是删除啊,所以 d 后面通常不接任何东东;

i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);

p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~

s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正则表达式!例如 s/正则/替换内容/g ,结尾g表示全局匹配

sed匹配范围:

空地址: 全文处理

单地址: 指定的某一行

/模式/: 被模式匹配到的每一行

范围区间: 10,20 十到二十行 ;10,+5 第十行向下五行 ;

步长: 1~2 ,表示1,3,5...从1开始+2输出行;2~2 ,表示2,4,6...从2开始+2输出行

案例:
指定行输出

指定匹配字符输出

删除匹配行

删除4后输出没有,查看原文件还存在,因为此时修改的是内存中加载的文件,原文件要修改需要加-i

提取ip地址(ifconfig)

awk 处理文本文件的语言,文本分析工具

作用:通过提供编程语言的功能,如变量、数学运算、字符串处理等,使得对文本文件的分析和操作变得非常灵活和高效

语法: awk [参数] [pattern] {action} [file]

  • pattern:是用于匹配输入数据的模式。如果省略,则 awk 将对所有行进行操作。

  • {action}:是在匹配到模式的行上执行的动作。如果省略,则默认动作是打印整行

参数:

-F :指定输入字段的分隔符,默认是空格。使用这个选项可以指定不同于默认分隔符的字段分隔符

-v <变量名>=<值>: 设置 awk 内部的变量值。可以使用该选项将外部值传递给 awk 脚本中的变量

-f <脚本文件>: 指定一个包含 awk 脚本的文件。这样可以在文件中编写较大的 awk 脚本,然后通过 -f 选项将其加载

-v : 显示 awk 的版本信息

-h : 显示 awk 的帮助信息,包括选项和用法示例

内置变量:

FS:输入字段分隔符

OFS:输出字段分隔符

RS:输入记录分隔符(输入换行符)

ORS:输出记录分隔符

NF:当前行的字段个数

NR:行号

FNR:各文件分别计数的行号

FILENAME:当前文件名

ARGC:命令行参数的个数

ARGV:数组,保存命令行所给的各参数

案例:

原样输出

根据指定列数输出

可知:

awk默认以空格为分隔符,多个空格也识别为一个

awk按行执行,可指定分隔符,默认空格

输出最后一列

NF代表最后一列

一次取出多列

加 ,会使用默认分隔符分割

指定内容输出

输出单行内容

取ip地址

指定分隔符

指定输出分隔符

0

评论区