Alex_McAvoy

想要成为渔夫的猎手

Linux 数据处理工具

【sed 工具】

sed 工具具有对数据进行替换、删除、新增、选取特定行等功能,其命令格式为:sed [选项] [动作]

常见的选项有:

  • -n:使用安静模式,只有经过 sed 特殊处理的一行才被显示出来
  • -e:在命令行模式上进行 sed 的动作编辑
  • -f:将 sed 的动作写在一个文件内,通过 -f file 来执行 file 内的动作
  • -r:使 sed 的动作支持扩展正则表达式,默认情况下仅支持基础正则表达式
  • -i:直接修改读取的文件内容,不经过屏幕输出

而对于 sed 命令的动作,其格式为:[n1[,n2]] function

其中,n1n2 不一定会出现,一般代表选择进行动作的行数,function 代表动作行为,具有下述参数:

  • a:新增,后接字符串,这些字符串会在当前行的下一行出现
  • i:插入,后接字符串,这些字符串会在当前行的上一行出现
  • c:替换,后接字符串,这些字符串会替换 n1n2 之间的行
  • s:替换,通常搭配正则表达式使用,格式为 "s/要被替换的字符串/新字符串/g"
  • p:打印,将某个选择的数据打印出来,通常与 sed -n 搭配使用
  • d:删除

【awk 工具】

awk 也是一个数据处理工具,相较于 sed 工具直接对行进行处理,awk 工具偏向于将一行分为数个字段来处理

awk 工具的命令格式为:awk "条件类型1{动作1} 条件类型2{动作2}..." filename

简单来说,在 awk 后接上两个单引号并加上大括号 {} 即可设置对数据进行的处理动作

awk 中,每一行的每个字段都是有一个变量名称的,依次是 $1$2 等,而 $0 代表的是一整行的数据,可以发现,awk 是以行为一次处理单位的,在一行中又是以一个字段为处理单位的

整个 awk 的处理流程如下:

  1. 读入第一行,并将第一行的数据依次填入 $0$1$2 等变量中
  2. 依据条件类型的限制,判断是否进行后续的动作
  3. 做完所有的动作与条件类型
  4. 若还有后续的行,重复上述步骤,直到所有数据处理完为止

【格式化打印】

有时需要将数据进行格式化输出,此时可采用 printf 命令来进行格式化打印,该命令类似于 C 语言中的 printf() 函数

printf 命令格式为:printf "打印格式" 打印内容

感谢您对我的支持,让我继续努力分享有用的技术与知识点!