一、sed命令
1.什么是sed
sed(stream editor)是一款高效的流式编辑器,它一次只能处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(patterm space),接着用sed命令处理缓冲区中的内容,处理完成后把缓冲区的内容送往屏幕,接着处理下一行,这样不断重复,直到文件末尾。sed处理过的文件内容并没有改变,除非使用重定向储存输出。
2.为何要用sed
sed 对比 vim
1、sed可以把处理文件的规则事先写好,然后用同一套规则编辑多个文件
而vim只能一个个编辑===>用于用一套规则处理多个文件
2、sed处理文件,一次只处理一行,即同一时间内存中只有文件的一行内容
无论文件多大,都不会对内存造成过大的压力====>用于处理大文件
3.如何使用sed
命令:d (删除) p(复制) s///gi(修改替换)
选项:-n 取消默认输出
-i 把内容输出到屏幕(规则处理的结果+默认输出的结果)
规则:定位+命令
定位方式:行号定位 :sed "1p" a.txt 打印第一行
sed "1,3p" a.txt 打印前三行
sed "3p;5p" a.txt 打印三到五行
正则定位:sed ‘/^命令名称$/p‘ a.txt
sed ‘ ‘ 命令 a.txt 没有定位,代表定位了所有行
二、awk命令
1.什么是awk
awk与sed和gerp很相似,主要擅长处理有规律的文本,主要用于一些格式化处理,
实际上awk不仅是命令,awk拥有自己的语言:awk程序设计语言,awk的三位创建
者已将它正式定义为:样式扫描和处理语言。
2.为何要用awk
awk是一种样式扫描与处理工具。但其功能却大大强于sed和grep。awk提供了极其强大的功能:它几乎可以完成grep和sed所能完成的全部工作,同时,它还可以可以进行样式装入、流控制、数学运算符、进程控制语句甚至于内置的变量和函数。它具备了一个完整的语言所应具有的几乎所有精美特性。
3.如何使用awk
选项:-F: (指定分隔符)
规则:定位+命令
定位:行号定位:
awk -F:‘NR == 3{print $1,$3}‘ /etc/passwd
awk -F: ‘NR == >= 3 && NR <=5{print $1,$3}‘ /etc/passwd
awk -F: ‘NR <= 3 || NR >= 8{print $1,$3}‘ test.txt
awk -F: ‘NR == 3 || NR == 5 || NR == 7{print $1,$3}‘ test.txt
正则定位:
awk -F:‘//{print $1,$2}‘ +文件路径
awk‘ ‘ 命令 没有定位,代表定位了所有行
命令:{print $n}
三、grep命令
1.什么是grep
grep擅长过滤内容,一种强大的文本搜索工具,它能使用正则表达式搜索文本,并 把匹配的行打印出来。Unix的grep家族包括grep、egrep和fgrep。利用这些返回值就可进行一些自动化的文本处理工作。
2.为何要用grep
grep的工作方式:它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到屏幕,不影响原文件内容。
grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。
3.如何使用grep
选项:‘正则‘
规则:正则=(想查找的内容)+文件路径
命令:-n 显示会行号
-i 忽略大小写
-l 只输出包含匹配行的文件名
grep -n "root" /etc/passwd # 显示行号
grep -i "" /etc/passwd # 忽略大小写
grep -l ‘内容‘ a.txt # 如果文件中但凡是存在包含内容的行就算过滤成功,会返回文件名
原文:https://www.cnblogs.com/ChuangShi-HolySpirit/p/13865300.html