• sed awk 样例


    sed [options] '[action]' filename

    options:

      -n:一般sed命令会把所有数据都输出到屏幕,如果加入此选项,则只会把经过sed命令处理的行输出到屏幕。

      -e:允许对输入数据应用多条sed命令编辑。

      -i:用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出。

    actions:

      -a:追加,在当前行后添加一行或多行

      -c:行替换,用c后面的字符串替换原数据行。

      -i:插入,在当前行前插入一行或多行。

      -d:删除,删除指定的行。

      -p:打印,输出指定的行。

      -s:字符替换,用一个字符串替换另一个字符串。格式为“行范围s/旧字符串/新字符串/g”(和vim中的替换格式类似)

     1 [ucm@MacBook-Pro testpace]$ cat stu.log 
     2 ID    NAME    GENDER    SOURCE
     3 1    FURONG    F    99
     4 2    FENGJ    F    66
     5 3    CANG    F    88
     6 [ucm@MacBook-Pro testpace]$ sed '2p' stu.log 
     7 ID    NAME    GENDER    SOURCE
     8 1    FURONG    F    99
     9 1    FURONG    F    99
    10 2    FENGJ    F    66
    11 3    CANG    F    88
    12 [ucm@MacBook-Pro testpace]$ sed -n '2p' stu.log 
    13 1    FURONG    F    99
    14 [ucm@MacBook-Pro testpace]$ 

    delete 第二行到第四行的数据,但是不改变文件自身。

    [ucm@MacBook-Pro testpace]$ sed '2,4d' stu.log 
    ID	NAME	GENDER	SOURCE
    
     1 #在第二行后,追加该字符串
     2 [ucm@MacBook-Pro testpace]$ sed '2a piaoliang jiushi renxing' stu.log 
     3 ID    NAME    GENDER    SOURCE
     4 1    FURONG    F    99
     5 piaoliang jiushi renxing
     6 2    FENGJ    F    66
     7 3    CANG    F    88
     8 #在第二行前插入字符串
     9 [ucm@MacBook-Pro testpace]$ sed '2i meinv' stu.log 
    10 ID    NAME    GENDER    SOURCE
    11 meinv
    12 1    FURONG    F    99
    13 2    FENGJ    F    66
    14 3    CANG    F    88
    15 #c 行替换命令
    16 [ucm@MacBook-Pro testpace]$ sed '3c FENGJ bujige' stu.log 
    17 ID    NAME    GENDER    SOURCE
    18 1    FURONG    F    99
    19 FENGJ bujige
    20 3    CANG    F    88
    21 # 替换字符串
    22 [ucm@MacBook-Pro testpace]$ sed '3s/66/90/g' stu.log 
    23 ID    NAME    GENDER    SOURCE
    24 1    FURONG    F    99
    25 2    FENGJ    F    90
    26 3    CANG    F    88
    27 [ucm@MacBook-Pro testpace]$ cat stu.log 
    28 ID    NAME    GENDER    SOURCE
    29 1    FURONG    F    99
    30 2    FENGJ    F    66
    31 3    CANG    F    88
    32 # 替换字符串 同时写入文件
    33 # s前加数字,搜索指定位置,不加数字,搜索整篇文档;后面加g代表替换全部,不加g则,仅仅替换一处
    34 [ucm@MacBook-Pro testpace]$ sed -i '3s/66/90/g' stu.log 
    35 [ucm@MacBook-Pro testpace]$ cat stu.log 
    36 ID    NAME    GENDER    SOURCE
    37 1    FURONG    F    99
    38 2    FENGJ    F    90
    39 3    CANG    F    88
    40 #执行多条sed命令
    41 [ucm@MacBook-Pro testpace]$ sed -e 's/FENGJ/boxilai/g;s/CANG//g' stu.log 
    42 ID    NAME    GENDER    SOURCE
    43 1    FURONG    F    99
    44 2    boxilai    F    90
    45 3        F    88
    46 [ucm@MacBook-Pro testpace]$ cat stu.log 
    47 ID    NAME    GENDER    SOURCE
    48 1    FURONG    F    99
    49 2    FENGJ    F    90
    50 3    CANG    F    88
    51 [ucm@MacBook-Pro testpace]$ 

    排序命令:

    sort [option] filename

    options:

      -f:忽略大小写

      -n:以数值进行排序,默认使用字符串进行排序

      -r:反向排序

      -t:指定分隔符,默认分隔符是制表符

      -k n[,m]:按照指定的字段范围进行排序。从第n字段开始,m字段结束。(默认到行尾)

    1 #指定分隔符是“:”,用第三字段开头,第三字段结尾进行排序,就是只用第三个字段进行排序
    2 [ucm@MacBook-Pro testpace]$ sort -t ":" -k "3,3" /etc/passwd
    3 #以数值进行排序
    4 [ucm@MacBook-Pro testpace]$ sort -n -t ":" -k "3,3" /etc/passwd

    统计命令

    wc [option] 文件名

    options:

      -l:只统计行数

      -w:只统计单词数

      -m:只统计字符数

    1 [ucm@MacBook-Pro testpace]$ wc /etc/passwd
    2   42   86 2223 /etc/passwd
    3 [ucm@MacBook-Pro testpace]$ wc -l /etc/passwd
    4 42 /etc/passwd
    5 [ucm@MacBook-Pro testpace]$ wc -w /etc/passwd
    6 86 /etc/passwd
    7 [ucm@MacBook-Pro testpace]$ wc -m /etc/passwd
    8 2223 /etc/passwd
    9 [ucm@MacBook-Pro testpace]$ 

    字符截取命令

    awk '条件1{动作1}条件2{动作2}···' filename

    条件(Pattern):

      一般使用关系表达式作为条件

      x > 10 判断变量x是否大于10

      x>=10大于等于

      x<=10小于等于

    动作(Action):

      格式化输出

      流程控制语句

     1 [ucm@MacBook-Pro testpace]$ df -h
     2 文件系统             容量  已用  可用 已用% 挂载点
     3 /dev/mapper/cl-root  143G  108G   28G   80% /
     4 devtmpfs             483M     0  483M    0% /dev
     5 tmpfs                497M  156K  497M    1% /dev/shm
     6 tmpfs                497M  7.1M  490M    2% /run
     7 tmpfs                497M     0  497M    0% /sys/fs/cgroup
     8 /dev/sda2            380M  130M  226M   37% /boot
     9 tmpfs                100M   20K  100M    1% /run/user/1000
    10 [ucm@MacBook-Pro testpace]$ df -h | awk '{print $1 "	" $3}'
    11 文件系统    已用
    12 /dev/mapper/cl-root    108G
    13 devtmpfs    0
    14 tmpfs    156K
    15 tmpfs    7.1M
    16 tmpfs    0
    17 /dev/sda2    130M
    18 tmpfs    20K
    19 [ucm@MacBook-Pro testpace]$ 
    View Code
    1 [ucm@MacBook-Pro testpace]$ df -h | grep "/cl-root" | awk '{print $5}'
    2 80%
    3 [ucm@MacBook-Pro testpace]$ df -h | grep "/cl-root" | awk '{print $5}' | cut -f 1 -d "%"
    4 80
    5 [ucm@MacBook-Pro testpace]$ 
     1 [ucm@MacBook-Pro testpace]$ awk 'BEGIN{print "this is testcase"} {print $2 "	" $4}' stu.log 
     2 this is testcase
     3 NAME    SOURCE
     4 FURONG    99
     5 FENGJ    90
     6 CANG    88
     7 [ucm@MacBook-Pro testpace]$ awk 'BEGIN{print "this is testcase"}{print $2 "	" $4}' stu.log 
     8 this is testcase
     9 NAME    SOURCE
    10 FURONG    99
    11 FENGJ    90
    12 CANG    88
    13 [ucm@MacBook-Pro testpace]$ awk '{print $2 "	" $4}' stu.log 
    14 NAME    SOURCE
    15 FURONG    99
    16 FENGJ    90
    17 CANG    88
    18 [ucm@MacBook-Pro testpace]$ awk 'END{print "this is end"} {print $2 "	" $4}' stu.log 
    19 NAME    SOURCE
    20 FURONG    99
    21 FENGJ    90
    22 CANG    88
    23 this is end
    24 [ucm@MacBook-Pro testpace]$ 

     FS内置变量

     1 [ucm@MacBook-Pro testpace]$ cat /etc/passwd | grep "/bin/bash" 
     2 root:x:0:0:root:/root:/bin/bash
     3 amandabackup:x:33:6:Amanda user:/var/lib/amanda:/bin/bash
     4 ucm:x:1000:1000:ucm:/home/ucm:/bin/bash
     5 [ucm@MacBook-Pro testpace]$ cat /etc/passwd | grep "/bin/bash" | grep -v root
     6 amandabackup:x:33:6:Amanda user:/var/lib/amanda:/bin/bash
     7 ucm:x:1000:1000:ucm:/home/ucm:/bin/bash
     8 [ucm@MacBook-Pro testpace]$ cat /etc/passwd | grep "/bin/bash" | grep -v root | awk '{FS=":"} {print $1 "	" $3}'
     9 amandabackup:x:33:6:Amanda    
    10 ucm    1000
    11 [ucm@MacBook-Pro testpace]$ cat /etc/passwd | grep "/bin/bash" | grep -v root | awk 'BEGIN{FS=":"} {print $1 "	" $3}'
    12 amandabackup    33
    13 ucm    1000
    14 [ucm@MacBook-Pro testpace]$ 
     1 [ucm@MacBook-Pro testpace]$ cat stu.log 
     2 ID    NAME    GENDER    SOURCE
     3 1    FURONG    F    99
     4 2    FENGJ    F    90
     5 3    CANG    F    88
     6 [ucm@MacBook-Pro testpace]$ cat stu.log | grep -v NAME
     7 1    FURONG    F    99
     8 2    FENGJ    F    90
     9 3    CANG    F    88
    10 [ucm@MacBook-Pro testpace]$ cat stu.log | grep -v NAME | awk '$4>=90{print $2}'
    11 FURONG
    12 FENGJ
    13 [ucm@MacBook-Pro testpace]$ 
  • 相关阅读:
    [BUUOJ记录] [强网杯 2019]随便注(三种方法)
    Content Security Policy (CSP)内容安全策略总结
    [HGAME Week2] Cosmos的博客后台
    [BUUOJ记录] [ACTF2020 新生赛]Include
    PHP弱类型hash比较缺陷
    CTF常见源码泄漏总结
    Sqlmap Tamper绕过脚本详解
    Golden Pyramid
    Prime Palindrome Golf
    Min and Max
  • 原文地址:https://www.cnblogs.com/jxdong116/p/6239944.html
Copyright © 2020-2023  润新知