linux-sed

2017-07-11  本文已影响0人  点点渔火

sed: Stream Editor文本编辑器,面向字符流, 一次处理一行内容,处理时,将当前处理行存储再临时缓存区中,称为"模式空间"(pattern space), 接着用sed命令处理缓存区的内容,处理完成后,将缓存区的内容送到屏幕,接着处理下一行,不断重复直到结尾。

model summary
x x为行号
x,y 表示行号从x到y
/pattern 查询包含模式的行
/pattern /pattern 查询包含两个模式的行
pattern/,x 在给定行号上查询包含模式的行
x,/pattern/ 通过行号和模式查询匹配的行
x,y! 查询不包含指定行号x和y的行 ! 表示反选
model summary
p 打印匹配行(和 -n 命令一个合用, 不然默认-e,缓存区的内容会重复输出)
= 显示文件行号
a\ 在定位行号后附加新文本信息
i\ 在定位行号后插入新文本信息
d 删除定位行(只是打印输出删除了,原文件没变)
c|用新文本替换定位文本
w filename 写文本到一个文件,类似输出重定向 >
r filename 从另一个文件中读文本,类似输入重定向 <
s 使用替换模式替换相应模式
q 第一个模式匹配完成后退出或立即退出
l 显示与八进制ACSII代码等价的控制符
n 从另一个文件中读文本下一行,并从下一条命令而不是第一条命令开始对其的处理(啥意思??)
N 在数据流中添加下一行以创建用于处理的多行组
g 将模式2粘贴到/pattern n/
y 传送字符,替换单个字符

——————————————————————————
PS:
linux文件输入输出重定向
输出重定向:

echo line > file
echo line >> file   # 追加不覆盖

重定向输入:

wc -l < file   # 统计文件file的行数

—————————————————————————

栗子:

sed -n '/client_timeout/p' conf  # 打印包含client_timeout的行
sed -n '/client_timeout/,/hahaha/p' conf  # 两个pattern, 满足其一就打印
sed -n '2, /client_timeout/p' conf # 从第2行到出现client_timeout的那行打印

sed -n '-e /=/p' '-e =' test  # 打印包含=的行, 且打印行号








修改配置文件conf的client_timeout值:
sed -i '-e s/\(client_timeout : \).*/\1100/' '-e s/\r//g' "/home/conf"
上一篇下一篇

猜你喜欢

热点阅读