Linux下sed,awk,grep,cut,find学习笔记

awk

awk是一种程序语言,对文档资料的处理具有很强的功能。awk擅长从格式化报文或从一个大的文本文件中抽取数据。

awk的命令格式为:

 

[c-sharp] view plain copy print ?
  1. awk [-F filed-separator] “commands” input-file(s)  

 

 

 

 

每一个命令(commands)都由两部分组成:一个模式(pattern)和一个相应的动作
(action)

 

[c-sharp] view plain copy print ?
  1. /pattern1/{action1}  
  2. /pattern2/{action2}  
  3. /pattern3/{action3}  

 

 

 

 

awk将一行文字按分隔符(filed-separator)分为多个域,依次记为$ 1,$ 2 . . . $ n。$0代表所有域值。因此awk更适合于以域为单位来处理文件。加之ARGIND等内置变量,使awk能处理多个文件。典型的应用为查找一个文件中的某个字段是否在另一个文件中出现。例子见我的另一篇博客【awk】诡异的错误,linux和windows换行的区别。但由于$0代表所有域,即整行,因此awk也有简单行处理能力。

sed

sed 是一个精简的、非交互式的编辑器。它能执行与编辑vi和emacs相同的编辑任务,但sed编辑器不提供交互使用方式,只能在命令行下输入编辑命令。

sed的命令格式为:

 

[c-sharp] view plain copy print ?
  1. sed [options] 'command' file(s)  
  2. sed [options] -f scrīptfile file(s)  

 

 

 

 

作为编辑器,当然少不了插入(a/、i/)、删除(d)、查找替换(s)等命令。详见sed命令详解 。

总结

  1. 如果文件是格式化的,即由分隔符分为多个域的,优先使用awk
  2. awk适合按列(域)操作,sed适合按行操作
  3. awk适合对文件的抽取整理,sed适合对文件的编辑。
  4. (想到再补~)

你可能感兴趣的:(linux)