2019.11.06

  1. 课程知识梳理复习

    1. 三剑客sed命令概述介绍
      作用说明: 擅长对文件信息进行编辑/擅长对行进行操作
      执行原理: 按照行进行处理文件
      处理信息会在模式空间中完成
      根据条件找出信息 完成相应处理指令(p d a i c s g)
      需要将模式空间中内容覆盖到磁盘文件中 -i
      语法结构: sed [参数] ‘条件信息 处理指令’ 文件信息
    2. 三剑客sed命令使用练习
      a 如何查询数据信息
      b 如何删除数据信息 -ni -i.bak
      c 如何修改数据信息 s###g #oldboy -> oldgirl s@#oldboy@oldgirl@g
      d 如何添加数据信息 a i -e
      sed命令应用总结
      sed命令参数总结:
      -n : 取消默认输出
      -e : 识别多操作指令
      -r : 识别扩展正则
      -i : 真正编辑修改文件内容
      sed命令指令信息:
      p : 输出显示指定信息
      d : 删除指定信息
      s : 替换指定信息
      g : 全局替换信息
      a : 添加指定信息在相应行的后面
      i : 插入指定信息在相应行的前面
      c : 将一行信息进行替换修改
      awk 排除 查询 替换 统计
  2. 三剑客awk命令概念介绍
    概念说明: pattern scanning and processing language
    模式识别和脚本编写
    执行原理: 按行处理文件信息, 根据匹配条件信息, 完成相应操作动作
    语法结构: awk [参数] ‘模式信息(条件) {动作}’ 文件信息
    在这里插入图片描述03、awk使用方法
    column-t
    在这里插入图片描述
    在这里插入图片描述
    如果有波浪线,!取反 放到波浪线前面,

在这里插入图片描述 练习题:
1) 显示xiaoyu的姓氏和ID号码
a 可以根据行号信息进行处理
思路1) 将xiaoyu信息进行匹配
awk ‘NR==2’ /oldboy/awk_test.txt

思路2) 根据需求进行处理
awk ‘NR==2{print $1 $3}’ /oldboy/awk_test.txt

执行过程:
[root@linux67 ~]# awk ‘NR2{print $1,$3}’ /oldboy/awk_test.txt
Zhang 390320151
[root@linux67 ~]# awk 'NR
2{print $1" "$3}’ /oldboy/awk_test.txt
Zhang 390320151
说明: awk取出多列信息可以使用 , 或者 " " 进行分隔

b 可以根据内容信息进行处理
思路1) 将xiaoyu信息进行匹配
awk ‘$2~/Xiaoyu/’ /oldboy/awk_test.txt

思路2) 根据需求进行处理
awk ‘$2~/Xiaoyu/{print $1,$3}’ /oldboy/awk_test.txt

在这里插入图片描述

在这里插入图片描述2) 姓氏是zhang的人,显示他的第二次捐款金额及他的名字
a 按照内容取出指定行信息
思路1) 取出姓zhang的人信息
# awk ‘$1~/Zhang/’ awk_test.txt
Zhang Dandan 41117397 :250💯175
Zhang Xiaoyu 390320151 :155:90:201

思路2) 第二次捐款记录 和 姓名取出来
awk默认以空格划分多列信息

awk可以对列分隔符号进行修改 -F “分隔符号”
[root@linux67 oldboy]# cat test.txt
oldboy:linux67:weige
oldboy:linux67:leige
oldboy:linux67:yige
[root@linux67 oldboy]# awk -F “:” ‘{print $3}’ test.txt
weige
leige
yige

awk可以对列分隔符号进行修改, 并且可以指定多个分隔符号 -F “[分隔符号01分隔符号02]”
[root@linux67 oldboy]# cat test.txt
oldboy:linux67>weige
oldboy:linux67>leige
oldboy:linux67>yige
[root@linux67 oldboy]# awk -F “[:>]” ‘{print $3}’ test.txt
weige
leige
yige

最终答案:
[root@linux67 oldboy]# awk ‘$1~/Zhang/’ awk_test.txt
Zhang Dandan 41117397 :250💯175
Zhang Xiaoyu 390320151 :155:90:201
[root@linux67 oldboy]# awk -F “[ :]+” ‘$1~/Zhang/{print $1,$2,$5}’ awk_test.txt
Zhang Dandan 100
Zhang Xiaoyu 90

扩展问题: 显示所有ID号码最后一位数字不是1或5的人的全名
5) 显示Xiaoyu的捐款,每个时都有以$开头, 如$110$220$330

  1. 显示Xiaoyu的捐款,每个捐款数值都有以$开头, 如$110$220$330
    awk -F “[: ]+” ‘KaTeX parse error: Expected '}', got 'EOF' at end of input: …Xiaoyu/{print "" 4 , " 4," 4,"" 5 , " 5," 5,""$6}’ awk_test.txt
    awk ‘$2~/Xiaoyu/{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 4}̲' awk_test.txt …#g’
    awk '$2~/Xiaoyu/{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 4}̲' awk_test.txt …

    print :  输出指定的信息
    gsub  :  替换指定的信息  gawk  substitute -- gsub
             gsub(//,"",$x)  --> gsub(/要替换的信息/,"替换成什么信息",$第几列信息做替换)
     		gsub(/:/,"$",)
    # awk '$2~/Xiaoyu/{gsub(/:/,"$",$NF);print $NF}' awk_test.txt 
    $155$90$201
    
    说明: NF表示列信息, $NF表示最后一列, ? 倒数第二列 == $3
          $NF == $4 - 1 
     	 oldboy  linux  edu       50 
     	                $(NF-1)  ($NF)
     					$(4-1)    $4    $4==$NF==50  $NF-1==50-1=49
    

作用:
1) 可以实现数值运算 — 计算器
[root@linux67 oldboy]# awk ‘BEGIN{print 2+3}’
5
[root@linux67 oldboy]# awk ‘BEGIN{print 2-3}’
-1
[root@linux67 oldboy]# awk ‘BEGIN{print 2*3}’
6
[root@linux67 oldboy]# awk ‘BEGIN{print 2^3}’
8
[root@linux67 oldboy]# awk ‘BEGIN{print 2/3}’
0.666667

  1. 可以实现变量设置
    [root@linux67 oldboy]# awk ‘BEGIN{name=“oldgirl”}$2~/Xiaoyu/{print name,$1,$2}’ awk_test.txt
    oldgirl Zhang Xiaoyu
    [root@linux67 oldboy]# awk ‘BEGIN{name=“oldgirl”}$2~/Xiaoyu/{print “name”,$1,$2}’ awk_test.txt
    name Zhang Xiaoyu

    [root@linux67 oldboy]# awk -F “[ :]+” ‘$1~/Zhang/{print $1,$2,$5}’ awk_test.txt
    Zhang Dandan 100
    Zhang Xiaoyu 90
    [root@linux67 oldboy]# awk ‘BEGIN{FS="[ :]+"}$1~/Zhang/{print $1,$2,$5}’ awk_test.txt
    Zhang Dandan 100
    Zhang Xiaoyu 90
    [root@linux67 oldboy]# awk -vFS="[ :]+" ‘$1~/Zhang/{print $1,$2,$5}’ awk_test.txt
    Zhang Dandan 100
    Zhang Xiaoyu 90

    内置变量:
    NR : 表示行的信息
    NF : 表示列的信息
    FS : 表示指定分隔符号

  1. 课程知识总结说明:
    1. awk命令概念介绍 语法结构/执行原理
    2. awk命令操作方法 按列取出信息/指定分隔符号 进行取反操作 替换操作
    3. awk命令高级操作 特殊模式(BEGIN/END) 内置变量(NR,NF,FS) 统计运算方法(累加运算/求和运算)
      累加运算: i=i+1 --> i++
      求和运算: i=i+$n
      预习:
      系统权限概念:
    4. 普通文件 目录 r w x
    5. 普通用户权限如何改变(提权)
      sudo chmod/chown
    6. 用户相关的命令 useradd usermod userdel groupadd groupmod groupdel

这样就可以直接加!取反

NF代表 number 表示列信息,$ 区域 表示最后一列

在这里插入图片描述在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值