美文网首页
sed & awk & tr

sed & awk & tr

作者: 岳麓山鸡王 | 来源:发表于2021-01-29 22:42 被阅读0次

    sed & awk & tr

    sed

    awk

    awk 是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。

    awk 一般需要一个输入,或者输出可以是echo 或者ls 或者是后面带个文件输出

    语法一啊不能是 awk [命令] file 或者 输出命令 | awk [命令]

    主要命令是 awk 'BEGIN{cmd} pattern [cmd] END[cmd]',一办begin会用来赋值,pattern里面会做计算,顺便输出,模式就输出,否则需要自己定义。end一般会用来打印信息

    awk '! a[$0]++' 去重

    [root@VM_39_7_centos ~]# cat bb.txt
    111
    222
    111
    222
    444
    
    #awk '! a[$0]++' bb.txt 去重
    
    #$0 表示第一列
    #a[$0]表述数组内容是$0的
    #!取反
    #0默认输出
    
    第一行:a[$0] 就是a[111],此时a[111]是0,通过i++后a[111]是0,取反后是1,默认输出,但此时a[111]已经是1
    第二行:a[$0] 就是a[222],此时a[222]是0,通过i++后a[222]是0,取反后是1,默认输出,但此时a[222]已经是1
    第三行:a[$0] 就是a[111],此时a[111]是1,通过i++后a[111]是1,取反后是0,默认不输出,但此时a[111]已经是2
    ·
    ·
    ·
    
    rel https://blog.csdn.net/qq_31555951/article/details/106616163
    [root@VM_39_7_centos ~]# awk '{print a[$0],!a[$0]++,a[$0],!a[$0],$0}' file
      1 1 0 111
      1 1 0 222
      1 1 0 555
      1 1 0 333
    1 0 2 0 111
    1 0 2 0 222
      1 1 0 444
    2 0 3 0 222
    1 0 2 0 555
    
    [root@VM_39_7_centos ~]# more file
    111
    222
    555
    333
    111
    222
    444
    222
    555
    
    

    内置变量

    FS:输入字符风隔符,默认为空白字符
    OFS:输出字段分隔符,默认为空白 字符
    RS:输入记录分隔符(输入换行符),指定输入时的额换行符
    NF:number of Field,当前行的字段的个数,字段数量
    NR:行号,当前处理的文本行的行号
    FNR:各文件分别计数的行号
    FILENAME:当前文件名
    ARGC:命令行参数的个数
    ARGV:数组,保存的是命令行所给定的各参数
    
    比如:
    echo -e '12:23:34:45' | awk -F:  '{print $2}'
    

    tr

    1. tr,translate的简写,主要用于压缩重复字符,删除文件中的控制字符以及进行字符转换操作。
    -s
    -d
    
    

    相关文章

      网友评论

          本文标题:sed & awk & tr

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