linux三剑客与管道

一:什么是管道?

linux提供管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右面命令的输入

什么是正则?

正则表达式就是记录文本规则的代码

举例:

1.找出所有hi单词 \bhi\b

2.hi单词后面有lucy的单词 \bhi\b.*\blucy\b

3.以0开头,然后是两个数字,然后是一个连字号“-”,最后是8个数字0\d{2}-\d{8}

常用的元字符

代码 说明
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字
\s 匹配人意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束

常用的限定符

代码/语法 说明
* 重复0次或更多次
+ 重复一次或更多次
重复0次或1次
{n} 重复N次
{n,} 重复n次或更多次
{n,m} 重复n到m次

二:grep
定义:根据用户指定的模式(pattern)对目标文本进行过滤,显示被模式匹配到的行
grep[options]PATTERN[file..]

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

三:sed
sed是流编辑器,一次处理一行内容
命令形式:sed[-hn..][-e<script>][-f<script file>][file]
-h显示帮助
-n 仅显示script处理后的结果
-i 修改源文件
-e<script>以选项中指定的script来处理输入的文本文件
-f<script 文件>以选项中指定的script文件来处理输入的文本文件
常用动作:

a 新增 sed -e '4 a newline'
c 取代 sed -e '2,5c No2-5 number'
d 删除 sed -e'2,5d'
i 插入 sed -e '2i newline'
p 打印 sed -n '/root/p'
s 取代 sed -e 's/old/new/g' g是全局替换

查看帮助文档:man sed j下一行 k上一行 /-e:查看有-e的行,n查看下一个-e行
四:awk
定义:把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行后续处理
命令形式:awk 'pattern + action'[file]
常用参数

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

实战:
1.使用begin加入标题
awk 'BEGIN{print"begin","begin"}{print 1,2}' /etc/passwd
2.自定义分隔符
echo "123456789" | awk 'BEGIN{RS="*"}{print $0}'

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容