美文网首页
awk和sed指令入门

awk和sed指令入门

作者: WANGGGGG | 来源:发表于2020-05-19 15:20 被阅读0次

    sed偏向于编译文档,awk偏向与分析文本

    sed使用方式

    增加

    sed -i "2a line 3 " test.txt

    解释说明

    (1)-i 对文件内容做变更
    (2)双引号中的2a解释成在第二行下附加内容,a可以理解成append。

    执行结果

    [root@localhost wcf]# cat test.txt
    wcf test file line 1
    line 2
    [root@localhost wcf]# sed -i "2a line 3 " test.txt
    [root@localhost wcf]# cat test.txt
    wcf test file line 1
    line 2
    line 3
    

    删除

    sed -i "3,4d" test.txt

    解释说明

    (1)-i 对文件内容做变更
    (2)双引号中的内容表示删除3-4行的内容,d可以理解成delete。

    执行结果

    [root@localhost wcf]# cat test.txt
    wcf test file line 1
    line 2
    line 3
    [root@localhost wcf]# sed -i "3,4d" test.txt
    [root@localhost wcf]# cat test.txt
    wcf test file line 1
    line 2
    

    修改

    sed -i "s/line/world/g" test.txt

    解释说明

    (1)-i 对文件内容做变更
    (2)双引号中的内容表示将文档中的line替换成world。

    执行结果

    [root@localhost wcf]# cat test.txt
    wcf test file line 1
    wct test file line 2
    line 3
    line 4
    [root@localhost wcf]# sed -i 's/line/world/g' test.txt
    [root@localhost wcf]# cat test.txt
    wcf test file world 1
    wct test file world 2
    world 3
    world 4
    

    查询

    sed -n "1,2p" test.txt
    sed -n "/wcf/p" test.txt

    解释说明

    (1)"1,2p"表示展示第一行和第二行的数据
    (2)"/wcf/p" 表示查找行中有wcf内容的行。

    执行结果

    [root@localhost wcf]# cat test.txt
    wcf test file line 1
    line 2
    [root@localhost wcf]# sed -n "1,2p" test.txt
    wcf test file line 1
    line 2
    [root@localhost wcf]# sed -n "/wcf/p" test.txt
    wcf test file line 1
    

    awk使用方式

    示例1

    awk -F " " '{if(NR<5 && NR >1) print $1}' test.txt

    解释说明

    (1)-F用于指定分隔符,我这里将空格设置成分隔符
    (2)NR<5 && NR >1表示大于第一行,小于第五行
    (3)$1表示只展示根据分隔符分割后的每行的第一列

    执行结果

    [root@localhost wcf]# cat test.txt
    wcf test file line 1
    wct test file line 2
    line 3
    line 4
    [root@localhost wcf]# awk -F " "  '{if(NR<5 && NR >1) print $1}' test.txt
    wct
    line
    line
    

    示例2

    awk -F ' ' '/wct/{print "filename:" FILENAME ",linenumber:" NR ",columns:" NF ",linecontent:"$0}' test.txt

    解释说明

    (1)根据空格将每一行进行分割成各个列,每一行就相当于数据库表的一条记录,每一列就相当于数据库的一个字段列
    (2)/wct/用于过滤行记录中是否包含wct
    (3)大括号中的语句表示,输出文件名,行号,该行对应的列数,$0表示输出整行的所有列

    执行结果

    [root@localhost wcf]# cat test.txt
    wcf test file line 1
    wct test file line 2
    line 3
    line 4
    [root@localhost wcf]# awk  -F ' '  '/wct/{print "filename:" FILENAME ",linenumber:" NR ",columns:" NF ",linecontent:"$0}' test.txt
    filename:test.txt,linenumber:2,columns:5,linecontent:wct test file line 2
    

    相关文章

      网友评论

          本文标题:awk和sed指令入门

          本文链接:https://www.haomeiwen.com/subject/vhebohtx.html