鸟哥的Linux私房菜——基础学习篇(第三版)笔记(12)

第12章 正则表达式与文件处理

grep 的一些参数
-A after,后边几行也列出来
-B before,前面几行也列出来
-n 显示行号

ex:
    dmesg | grep -n -A3 -B2

12.2 基础正则表达式

例题1:查找特定字符串

    grep -n 'the' re.txt

    grep -vn 'the' re.txt       #反向选择

    grep -in 'the' re.txt       #忽略大小写

例题2:利用中括号查找集合字符

    grep -n 't[ae]st' re.txt    #中括号内集合只代表一个字符

    grep -n '[^g]oo' re.txt     #反向选择

    grep -n '[^[:lower:]]oo' re.txt     #小写字母

    grep -n '[[:digit:]]' re.txt        #数字

    grep -n '\.$' re.txt       #以.号结尾的行

    grep -n 'g..d' re.txt       #两个固定的字符

    grep -n 'ooo*' re.txt       #至少两个以上的字符
sed 编辑行     [n1 [, n2]]     function        #类似于ex
`-n     silent`
`-r         ERE`
`-i`        直接修改读取的文件内容

a c d i p(print) s

ex1:
    nl /etc/passwd | sed '2,5d'

ex2:
    nl /etc/passwd | sed '2a drink tea'

ex3:
    nl /etc/passwd | sed '2,5c NO 2-5 number'   #替换2-5行为NO 2-5 number

ex4:
    nl /etc/passwd | sed -n '5,7p'  #列出5-7行

替换功能:

    sed 's/old/new/g'

直接修改文件内容

    sed -i 's/\.$/\!/g'        #将行尾的.替换为!

12.3 扩展正则表达式

egrep
+(>=1),?(>=1),(),()+多个重复组的判别

12.4 文件的格式化相关处理

12.4.1 格式化打印:printf

12.4.2 awk:好用的数据处理工具

    awk '条件类型1{动作1}  条件类型2{动作2} ...' filename

awk主要是处理每一行的字段内的数据,而默认的字段分隔符为spacetab

ex:
    last -n 5 | awk '{printf $1 "\t" $3}'
    每一个字段的名称分别是$1,$2, $3...
    $0代表一整行数据

    变量名称    代表意义
    NF          每一行的字段总数
    NR          第几行
    FS          分隔符,默认是space(48)

ex:
    last -n 5 | awk 'print $1 "\t lines: " NR "\t columes: " NF'

12.4.3 文件比较工具

diff
    -b  忽略一行中多个空白的区别,程序
    -B  忽略空白行的区别
    -i  忽略大小写的区别
patch
ex:
    diff -Naur passwd.old passwd.new > passwd.patch

    patch -pN < patch       #更新
    patch -R -pN < patch    #还原
        N表示取消几层目录的意思,0
        -R      还原

12.4.4 文件打印准备

pr

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值