# 常用的linux命令 > ## 文件、字符串操作命令 * **awk命令**: awk是好用的行处理工具,其能够将每行的文本当作参数传递给自定义的动作,其数据既可以来源于管道的输入,也可以来源于指定的文件 * awk命令的格式类似于 ```shell awk '条件1{动作1} 条件2{动作2}...' filename ``` * awk处理行数据时分割字段默认用'空格'或者‘tab'进行分割 * awk内建变量: 1. NR: 当前行的行号 2. NF: 当前行字段的数量 3. FS: 目前的分隔字符,默认是空格 * 若想要在动作中定义FS,必须在定义FS的动作之前加上BEGIN关键字,表示预先设定FS。否则,FS的设定对第一行不会生效,因为只有将第一行读入并按默认的FS进行分割后,为FS赋值的动作才会执行 ```shell #例如,为awk命令定义BEGIN 的FS赋值动作 cat /etc/passwd | head -n 10 | awk 'BEGIN{FS=":";} {print NR "\t" $1 "\t" $3 ""}' ``` * uniq命令: uniq命令将整合相邻且相同的行为一行,通常配合sort使用来消去排序后重复的行,若指定-c选项,则在字符串前加上一列表示各行字符串的频数 * sort命令: * -r : 反向排序 * -f : 忽略大小写差异 * -n : 使用纯数字来排序 * -b : 忽略前面的空格部分 * -f : 针对特定的域来进行排序