sed & awk & tr

# 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)