Linux常用指令 7

sed是一个非交互性文本流编辑器,编辑文件或标准输入导出的文本拷贝,标准输入可能是来自键盘,文件重定向,字符串,变量或一个管道文本。sed不与初始化文件打交道,它操作的只是一个拷贝,然后所有的改动如果没有重定向到一个文件,将输出到屏幕,sed是一个非交互性编辑器,必须通过行号或正则表达式指定要改变的问本行。

sed在文件中查询文本

sed游览输入文件时,缺省从第一行开始,目前有两种方式定位文本:① 使用行号,可以是一个简单数字,或是一个行号范围 ② 使用正则表达式
使用sed在文件中定位文本的方式

参数含义
xx为一行号
x,y表示行号从x到y
/pattern/查询包含模式的行,如/disk or /[a-z]/
/pattern/pattern/查询包含两个模式的行,例如/disk/disks/
pattern/,x在给定行号查询包含模式的行,如/ribbon/,3
x,/pattern通过行号和模式查询匹配行 3./vdu/
x,y!查询不包含指定行号x和y的行
基本sed编辑命令
指令含义
p打印匹配行
=显示文件行号
a\在定位行号后附加新文本信息
i\在定位行号后插入新文本信息
d删除定位行
c\用新文本替换定位文本
s使用替换模式替换相应模块
r从另一个文件中读文本
w写文本到一个文件
q第一个模式匹配完成后推出或立即推出
l显示与八进制ASCII码等价的控制字符
{}在定位行执行的命令组
n从另一个文件中读文本下一行,并附加在下一行
g将模式2粘贴到/pattern n/
y传送字符
n延续到下一输入行,允许跨行的模式匹配语句
sed指令详细说明
# [address[,address]p] 显示文本行行号
sed -n '2p' sed.txt # 打印sed.txt的第二行文本
sed -n '2,4p' sed.txt # 打印sed.txt文件的2到4行
sed -n '/test/p' sed.txt # 查询test字符串,并打印所在行
sed -n '3,/this/p' sed.txt # 只在第三行查询this
sed -n '/\$/'p sed.txt # 查询特殊字符
sed -n '1,$p' sed.txt # 查询整个文件,$代表最后一行
sed -n '/.*is/'p sed.txt # 查询以is结尾的0次或多次重复的任意单词
sed -e '/this/=' sed.txt # 打印带this字符串出现的行号,使用格式/pattern/= ,可以-e改为-n只显示行号
sed -n -e '/this/p' -e '/this/=' sed.txt # 打印this出现的行及行号 sed -n -e /pattern/p -e /pattern/= file
创建sed脚本文件
#!/bin/sed -f          sed命令解释行
/this/ a\              # a\通知sed这是一个附加操作,会在this行结尾插入一个新行,新行的内容为下所示
add some words after the line
3 i\                   # i\在3行的前面加上以下字符串
add some words before the line
3 c\                   # c\将第三行的字符串替换为以下字符串
change current line words
删除文本
#[address[,address]]d
sed '1d' sed.txt #删除第一行数据
sed '1,3d' sed.txt
sed '$d' sed.txt #删除最后一行数据
sed '/this/d' sed.txt #删除包含this的所有行
替换文本

[address[,address]] s/pattern-to-find/replacement-pattern/[g p w n]
s通知sed这是一个替换操作,parrern-to-find是待查找的字符串,replacement-pattern是用来替换的字符串;g 缺省情况下只替换第一次出现模式,使用g选项替换全局所有出现模式;p 缺省sed将所有被替换行写入标准输出,加p选项将使-n选项无效,-n选项不打印输出结果;w 文件名 使用此选项将输出定向到一个文件。

sed 's/this/change/' sed.txt # 将sed.txt文件中this字符串替换为change
sed 's/\$//' sed.txt # 将sed.txt文件中$符号删除
sed 's/this/change/g' sed.txt
sed 's/this/change/w sed.out' sed.txt #将结果输出到sed.out文件
文件操作

[address[,address]]w filename,‘w’选项通知sed将结果写入文件,filename是自解释文件名

sed '1,2 w fileOut' sed.txt # 将sed.txt 1,2行输出到文件fileOut
sed '/Test/ w fileOut' sed.txt # 将sed.txt中有Test的行输出到sed.txt文件

address r filename , ‘r’通知sed将从另一个文件源中读文件,filename是文件名

sed '/Test./r sedIn.txt' sed.txt # 从文件sedIn.txt中读取内容到文件sed.txt中

address q 匹配后退出命令格式

使用系统sed
cat -v test # 查看控制符
sed 's/##*/g/g' sed.txt # 删除所有#字符,使用一个空格替换
sed 's/^1*//g' sed.txt # ^表示行首,^1*表示行首任意个1
sed 's/^M//g' sed.txt # 去除行尾^M字符
sed 's/--*//g' # 删除横线
sed '/^$/d' # 删除空行
sed '$d' # 删除最后一行
sed '1d' # 删除第一行
sed 's/^[0-9]//g' #删除行首数字
sed 's/[0-8]*/& password/g' sed.txt # 在每一行末尾加上password

$NAME="It is a go test"
$REPLACE="GO"
$NEW_NAME = `echo $NAME | sed 's/go/$REPLACE/g'`

#常用命令集[]表示空格 [ ]表示tab键
's/\.$//g' # 删除以句点结尾行
'-e /abcd/d' # 删除包含abcd的行
's/[][][]*/[]/g' # 删除一个以上空格,用一个空格代替
's/^[][]*//g' # 删除行首空格
's/\/[][]*/[]/g' # 删除句点后跟两个或更多空格,代之以一个空格
'/^$/d' # 删除空行
's/^.//g' # 删除第一个字符
's/COL\(...\)//g' # 删除紧跟COL的后三个字母
's/^\///g' # 从路径中删除第一个\
's/[]/[ ]//g' # 删除所有空格并用tab键替换
'S/^[ ]//g' # 删除行首所有tab键
's/[ ]*//g' # 删除所有tab键
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值