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

来源:互联网 发布:中信公积金网络贷款 编辑:程序博客网 时间:2024/05/16 06:27

第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 numberex4:    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  忽略大小写的区别
patchex:    diff -Naur passwd.old passwd.new > passwd.patch    patch -pN < patch       #更新    patch -R -pN < patch    #还原        N表示取消几层目录的意思,0        -R      还原

12.4.4 文件打印准备

pr

0 0
原创粉丝点击