zoukankan      html  css  js  c++  java
  • 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]$ 
  • 相关阅读:
    关于同余最短路
    【水】关于 __attribute__
    题解【AtCoder
    一些简单图论问题
    浅谈简单动态规划
    关于博客园主题(美化博客园)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第47章 读书笔记(待更新)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第46章 读书笔记(待更新)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第45章 读书笔记(待更新)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第44章 读书笔记(待更新)
  • 原文地址:https://www.cnblogs.com/jxdong116/p/6239944.html
Copyright © 2011-2022 走看看