shell 编程中的sed和awk

sed命令

sed:stream editor :一次处理一行内容,处理时,把当前的行存储在临时缓冲区,处理完后,输送到屏幕,不加参数的情况下sed命令不会改变源文件内容,sed命令用法如下:

sed [参数] '命令' file
1.模式:
        p    ##显示
        d    ##删除
        a    ##添加
        c    ##替换
        i    ##插入
2.参数:
        -n    ##只输出处理后的结果
        -i    ##处理并修改源文件        


sed -n ‘/:/p’ /etc/fstab ##显示有:的行
sed -n ‘/^#/p’ /etc/fstab ##显示以#开头的行
sed -n ‘/2018$/p’ /etc/fstab ##显示以2018结尾的行

shell 编程中的sed和awk
sed ‘1,4d’ /etc/fstab ##显示除了1到4行之外的所有行

shell 编程中的sed和awk

awk命令

awk处理机制:根据模式一次从文件中抽取一行文本,对这行文本进行切片(默认使用空白字符作为分隔符).

awk ‘{print $n}’ test ##$n表示输出第n个字段

awk -F ' ' ‘{print $1,$3}’ test ##指定分隔符,输出第1和3列

shell 编程中的sed和awk

shell 编程中的sed和awk
awk ‘{print FILENAME,NR}’ /etc/passwd ##输出文件名,和当前操作的行号

shell 编程中的sed和awk

awk -F: ‘{print NR,NF}’ /etc/passwd ##输出每次处理的行号,以及当前以":"为分隔符的字段个数

shell 编程中的sed和awk