• shell编程--awk 、sed 命令介绍


    一、sed命令

    sed 主要是用来将数据进行选取、替换、删除、新増的命令。我们看看命令的语法:

    [root@localhost ~] # sed [选项] '[动作]' 文件名
    
    选项
    
        -n:一般 sed 命令会把所有数据都输出到屏幕上。如果加入此选项,则只会把经过 sed 命令处理的行输出到屏幕上;
        -e: 允许对输入数据应用多条 sed 命令编辑;
        -f 脚本文件名:从 sed 脚本中读入 sed 操作。和 awk 命令的 -f 选项非常类似;
        -r:在 sed 中支持扩展正则表达式;
        -i:用 sed 的修改结果直接修改读取数据的文件,而不是由屏幕输出动作;
        a :追加,在当前行后添加一行或多行。当添加多行时,除最后一行外,每行末尾需要用“”代表数据未完结;
        c :行替换,用c后面的字符串替换原数据行。当替换多行时,除最后一行外,每行末尾需用“”代表数据未完结;
        i :插入,在当前行前插入一行或多行。当插入多行时,除最后一行外,每行末尾需要用“”代表数据未完结;
        d:删除,删除指定的行;
        p:打印,输出指定的行;
        s:字符串替换,用一个字符串替换另一个字符串。格式为“行范围s/旧字串/新字串/g”(和Vim中的替换格式类似);



    list.txt文件为
    
    
    


    sed 所做的修改并不会直接改变文件的内容(如果是用管道符接收的命令的输出,则连文件都没有),而是把修改结果只显示到屏幕上,除非使用"-i"选项才会直接修改文件。

    1、sed -n '2p' list.txt 输出指定行,这里是输出list.txt文件第二行
    如果不加 -n 指令,会把文件的内容都输出一遍,指定行重复输出
    2、sed '2,4d' list.txt         删除指定行,这里是删除【2,4】行,输出删除后的结果,但是并不会马上改动文件,

    只有加上 -i才会修改文件内容 sed -i '2,4d' list.txt

      3、sed '2a hello' list.txt                                   在指定行 后 面插入内容

    4、sed '2i hello' list.txt          在指定行前面增加内容


    
    
    
    5、sed 's/111/----/' list.txt       将list.txt文件的111都替换成----
    
    

             sed '1s/111/----/g' list.txt                                   将指定行的某个内容替换

    
    
    
    6、sed '1s/^/#/g' list.txt                         注释掉指定行,^代表行首
    
    

     二、awk命令

     awk语言的最基本功能是在文件或字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作,完整的awk脚本通常用来格式化文本文件中的信息
    awk '条件1 {执行语句 1} 条件 2 {执行语句 2} …' 文件名
    
    

    在awk编程中,因为命令语句非常长,所以在输入格式时需要注意以下内容:

    • 多个条件{动作}可以用空格分隔,也可以用回车分隔。
    • 在一个动作中,如果需要执行多条命令,则需要用分隔,或用回车分隔。
    • 在awk中,变量的赋值与调用都不需要加入"$"符号。

    list.txt文件

    1、awk '{printf $1 " " $2 " "}' list.txt        输出list文件第1列和第2列的内容   列之间用空格区分

    2、awk 'BEGIN{printf "This is a transcript "}     {printf $1 " " $3" "}' list.txt              在执行命令之前输出提示语句

    3、 awk 'END{printf "The Printf was End "}     {printf $1 " " $3" "}' list.txt                                            在命令执行完毕之后输出提示

    4、awk '/666/' list.txt                    打印包含666 的行

    5、awk '{if($2>333)print $3}' list.txt                           输出第二列>=333对应行的第三列

    也可以剔除一些特殊的行在进行条件筛选

    awk有很多内建的功能,比如数组、函数等,后面带补充

    参考博客https://www.cnblogs.com/lizhouwei/p/10029505.html

    
    
  • 相关阅读:
    采用坐标变换(移动和旋转)画箭头
    学会Func
    一个链接器的实现
    linux内核skb操作
    终于实现samba可写不可删除
    删掉SafeDrv病毒(这个病毒有点意思)
    Writing a ServiceMain Function(使用RegisterServiceCtrlHandler函数)
    利用Winscp,Putty实现Windows下编写Linux程序
    联发科6亿美元将大陆子公司卖给四维图新(180个人价值6亿美元)
    TFTP:简单文本传输协议,BOOTP:引导程序协议
  • 原文地址:https://www.cnblogs.com/-citywall123/p/13209722.html
Copyright © 2020-2023  润新知