海晶灵 发表于 2023-3-2 00:17:41

sed与awk(一)

ed中的替换命令s是 s/pattern/replacement/flag
sed和awk

[*]都是面向字符流的。都是从文本文件中一次一行地读取输入
[*]它们控制所做的工作时 所用的指令不同
sed的字符流定位对如何应用寻址有重要影响。在ed中没有指定地址的命令
只影响当前行。sed遍历文件,每次一行,这样每一行都成为当前行,而且
每一行都应用这个命令。结果是sed对文件中的每一行应用了没有地址的命令。
也就是说,sed是隐式的全局命令。
在ed中,使用寻址扩大命令影响的行数;在sed中,使用寻址限制
受命令影响的行数
awk是作为可编程的编辑器而开发的,同sed一样,它也是面向字符流的,
并且解释编辑命令的脚本。awk与sed不同的地方是它废弃了行编辑器的
命令集。它提供了仿效C语言的程序设计语言,例如,print语句取代p命令;
但延续了寻址的概念
大致相同的方式调用sed和awk command 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】 我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: sed与awk(一)