1:grep
Global search regular expression and print out the line
全面搜索研究正则表达式并显示出来
grep 命令是一种强大的文本搜索工具 , 根据用户指定的“模式”对目标文本进行匹配检查 , 打印匹配到的行,由正则表达式或者字符及基本文本字符所编写的过滤条件
2:grep 的格式
grep
匹配条件 处理文件
例如
grep root passwd ####在passwd文件中检索含有root的行
grep ^root passwd ####在passwd文件中检索以root开头的行
grep root$ passwd ####在passwd文件中检索以root结尾的行
grep -i root passwd ####-i为忽略大小写检索
grep -E "root|ROOT" passwd ####-E 为扩展正则表达式####
#####在mnt里面写好实验用的文件
3:grep 中字符的匹配次数设定
###在mnt里面建立好实验所用文件
#######*
字符出现 [0- 任意次 ]
字符出现 [0-1 次 ]
字符出现 [1- 任意次 ]
字符出现 [n 次 ]
字符出现 [ 最少出现 m 次,最多出现 n 次 ]
字符出现 [0-n 次 ]
{m,\}
字符出现 [ 至少 m 次 ]
(xy\){n\}xy
关键字出现 [n 次 ]
关键字之间匹配任意字符
4:grep 中字符的匹配位置设定
修改testfile文件内容
^ 关键字 #####匹配关键字在每一行的开头
关键字 $ #####。。。。。。。。。 结尾
\< 关键字 #####忽略关键字左边的内容
关键字 \> #####。。。。。右边。。。
\< 关键字 \> #####只匹配关键字
###############################################################################################
二:sed
1:sed行编辑器
stream editor
用来操作纯 ASCII 码的文本处理时 , 把当 前处理的行存储在临时缓冲区中 , 称为“模式空间” (pattern space) 可以指定仅仅处理哪些行
sed 符合模式条件的处理 不符合条件的不予处理处理完成之后把缓冲区的内容送往屏幕,接着处理下一行 , 这样不断重复 , 直到文件末尾
sed 对字符的处理
p显示
d删除
a添加
c替换
w写入
i插入
2:p 模式操作 ###显示操作
复制/etc/fstab到/mnt
sed -n '/\:/p' fstab ###显示有“:”的行
sed -n '/UUID$/p' fstab ###显示以UUID结尾的行
sed -n '/^UUID/p' fstab ###显示以UUID开头的行
cat -n fstab | sed -n '2,6p' ###显示fstab文件的2-6行
cat -n fstab | sed -n '2,6!p' ###不显示fstab文件的2-6行
d 模式操作 ###删除操作
sed '/^UUID/d' fstab ##删除以UUID开头的行
sed '/^#/d' fstab ###删除以#开头的行
sed '/^$/d' fstab ###删除fstab文件中的空白行(第一行)
sed '1,4d' fstab ###删除1-4行
sed '/^UUID/d' fstab ###删除以UUID开头的行
a 模式操作 ###添加操作(在指定行之后)
sed '/^UUID/ahello fstab ###在以UUID开头的行后添加hello
sed '/^UUID/ahello\nwestos‘ fstab ####在以UUID开头的行后添加hello然后换行添加westos
i 模式操作 ###添加操作(在指定行之前)
sed '/^UUID/ihello' fstab' ###在以UUID开头的行之前添加hello
c 模式操作 ###替换操作
sed '/^UUID/c\hello sed\nwestos /etc/fstab' ###将以UUID开头的行替换为hello
w 模式操作 ###将输出写入文件
sed'/^UUID/w/tmp/fstab.txt' fstab ###将以UUID开头的行写入tmp/fstab.txtz中
sed-n'/^UUID/w /tmp/fstab.txt' /etc/fstab ###屏蔽输出
sed'/^UUID/='/etc/fstab ###给以UUID开头的行前面添加行号
sed'6r /etc/issue' /etc/fstab ###将/etc/issue文件中的内容添加进fstab文件的第6行之后
sed 的其他用法
sed-n -e '/^UUID/p' -e '/^UUID/=' fstab ###-e执行两步操作 显示以UUID开头的行并添加行号
sed-f rulesfile file
sed‘s/^\//#/'/etc/fstab ###将以/开头的行替换成#
sed's@^/@#@g'/etc/fstab ###@相当于/
sed's/\//#/'/etc/fstab ###将/替换成#
sed's/\//#/g/'/etc/fstab ###将全文的/替换成#
sed-e 's/brown/green/; s/dog/cat/' data 将brown替换成green并且将dog替换成cat
sed 的其他用法
sed'$!G' data ####
sed'=' data | sed 'N; s/\n/ /'
sed-n '$p' data
############################################################################################
awk 报告生成器
awk 处理机制 :awk 会逐行处理文本 , 支持在处理第一行之前做一些准备工作 , 以及在处理完最后一行做一些总结性质的工作 , 在命令格式上分别体现如下 :
BEGIN{}: 读入第一行文本之前执行 , 一般用来初始化操作
{}: 逐行处理 , 逐行读入文本执行相应的处理 , 是最常见的编辑指令快
END{}: 处理完最后一行文本之后执行 , 一般用来输出处理结果
awk 基本用法 ##########-F为指定分隔符
linux 上面默认使用 gawk
awk '{print FILENAME}' passwd
awk '{print 第 "NR" 行 , 有 "NF" 列 }'
awk 'BEGIN{print NAME}' 在文件的开头打印NAME
awk 'END{print WESTOS}' 在文件的结尾打印WESTOS
awk -F : 'BEGIN{print NAME}{print $1}END{WESTOS}'
awk '/bash$/' ###打印以bash结尾的行
awk -F : '/bash$/{print $1}' ####打印以bash结尾的行的第一列
awk 的基本用法
awk'BEGIN{a=34;print a+12}' ###打印运算后的值
awk-F : '/^ro/{print}' /etc/passwd
awk-F : '/^[a-d]/{print $1,$6}' passwd.txt
awk-F : '/^a|nologin$/{print $1,$7}' passwd.txt
awk-F : '$6~/bin$/{print $1,$6}'
awk-F : '$7!~/nologin$/{print $1,$7}' passwd.txt