Linux学习笔记-grep,sed,awk(鸟哥12章 老段视频笔记)

时间:2021-05-16 08:56:24

grep

grep 关键字 文件

  • . 一个字符

  • 在文件中查找有关键字的行

    grep ‘[Tt].m’ passwd –color
    识别以T和t开头,和m中间有一个字符的单词

常用:

[]可选

^开头

^tom以tom开头

tom $以tom结尾

\<开头 \>结束

{m}m个数 grep 'to\{4\}m' 找到toooom

{x,y}数目为x到y个 to\{1,3\}m t和m中间有1-3个o

sed

sed 's/条件/d' 文件

删除

sed '1,2/d' hosts 显示删除1,2行

sed -i '1,2/d' hosts 直接对文件进行修改

sed '$d' hosts 删除最后一行

  • 添加

    sed '/adm/ixxxxx' hosts 在含有adm的上一行(i)添加xxxxx

    sed '/^adm/axxxxx' hosts 在开头(^)含有adm的下一行(a)添加xxxxx

  • 替换

    sed '/adm/cxxxxx' hosts 含有adm的那一行替换成xxxxx

    sed 's/root/ROOT/g hosts' 文件中所有的root改为 ROOT

    sed -e 's/root/ROOT/g -e 'S/bin/BIN/g' hosts' 多个替换操作 ·

    set -f yy hosts 提前将操作写入yy,使用yy文件对hosts进行修改

awk

找到指定部分重新排版,分行处理

awk -F '条件{操作}' xx -F指明分隔符,缺省位空格

  • awk -F: '{print $0}' 输出每行($0)第一个字段

  • 输出ip ifconfig eth0 |grep 'inet addr'|awk ‘{print $2}’ | awk -F: { print $2 }

  • awk -F: '{print NR, $0 ,NF }' xx 显示行号(NR),并显示每行有几个字段(NF)

  • 条件判断 awk -F: '$1<=3 {print $3}' xx

  • date | awk '{print "year:"$1 "\n"}'

    输出year:2017

  • 设置分隔符

    awk -F: 'BEGIN{OFS="\\t\\t"; ORS="\n\n"}{print \$1 \$2}' xx

    ofs是字段之间分隔符,ORS是每行额分隔符

基础正则表达式

判断语句

diff 文件1 文件2

diff 路径1 路径2