翼度科技»论坛 云主机 LINUX 查看内容

sed与awk(一)

5

主题

5

帖子

15

积分

新手上路

Rank: 1

积分
15
ed中的替换命令s是 [address]s/pattern/replacement/flag
sed和awk

  • 都是面向字符流的。都是从文本文件中一次一行地读取输入
  • 它们控制所做的工作时 所用的指令不同
sed的字符流定位对如何应用寻址有重要影响。在ed中没有指定地址的命令
只影响当前行。sed遍历文件,每次一行,这样每一行都成为当前行,而且
每一行都应用这个命令。结果是sed对文件中的每一行应用了没有地址的命令。
也就是说,sed是隐式的全局命令。
在ed中,使用寻址扩大命令影响的行数;在sed中,使用寻址限制
受命令影响的行数
awk是作为可编程的编辑器而开发的,同sed一样,它也是面向字符流的,
并且解释编辑命令的脚本。awk与sed不同的地方是它废弃了行编辑器的
命令集。它提供了仿效C语言的程序设计语言,例如,print语句取代p命令;
但延续了寻址的概念
大致相同的方式调用sed和awk command [options] script filenames
script指定了要执行的指令。如果在命令行上指定script,假如它包含有
可以由shell解释的空格或任意字符(例如$),那就必须用’’括起来
在sed和awk,每个指令都包括两部分:模式和过程。
模式是由斜杆(/)分隔的正则表达式;过程指定一个或多个将被执行的动作
在sed和awk,过程的内容有很大不同。在sed中,过程由类似于行编辑器
中使用的编辑命令组成,大部分是单个字母。而在awk,过程由程序设计语句
和函数组成。过程必须用大括号括起。
通常情况下,awk将每个输入行解释为一条记录而将那一行上的每个单词
(由空格或制表符分隔)解释为一个字段。一个或多个连续的空格或制表符被看做
一个定界符。awk允许在模式或过程中引用这些字段。$0代表整个输入行。 $1
$2…表示输入行上的每个字段。
sed

  • -e 将下一个参数解释为指令
  • -n 阻止自动输出(所有行),和p连用
  • -f scriptfile
awk

  • -f scriptfile
  • -F 改变字段分隔符
参考资料
sed与awk(第二版)

来源:https://www.cnblogs.com/yknNewbie/p/17170225.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具