一次处理一行内容,把当前处理的行存储在临时缓冲区,用sed处理缓冲区中的内容,处理完后,送往屏幕,接着处理下一行,直到文件末尾(文件内容没有改变)
如 1, 3 表示1,2,3行;$表示最后一行
sed 's:test:TEXT:g'
sed [-nefri] 'command' file(s)
sed [-infri] -f scriptfile file(s)
-n 列出到屏幕
-f 直接将Sed的动作写在一个档案内
-r 支持延展型
-i 直接修改读取的档案内容,而不是由屏幕输出
a 新增,后面可以接字符串,这些字串出现在目前的下一行
c 取代,后面可以接字串,这些字串可以取代n1,n2之间的行
d 删除,后面通常不接内容
i 插入,后面可以接字串,这些字串出现在目前的上一行
p 列印,将某个选择的内容打印出来
s 替换,前面为旧的,后面为新的
awk 'BEGIN{ print "start" } pattern{ commands } END{ print "end" } file
这三个部分都是可选的
第一步:执行BEGIN中commands
第二步:从文件或标准输入读取一行,执行pattern 中commands,逐行扫描
第三步:读至末尾时,执行END中commands
$n 当前记录的第n个字段
$0 当前行的文本内容
FS 字段分隔符(默认为空格),可以使用-v进行修改
NF 字段数,执行过程中对应于当前字段数
NR 记录数,执行过程中对应于当前行号
OFS 输出字段分隔符(默认为空格)RS 记录分隔符(默认为换行符)
ORS 输出记录分隔符(默认为换行符)
选项:
-F 指明输入时用到的字段分隔符
-v var=value,自定义变量
例子: