sed常用使用方法

文本编辑工具Sed常用使用使用方法

sed 命令是处理数据以行为单位,每次只能处理一行。处理时sed会把要处理的数据单独拿到内存中模式空间,处理完后把容送往屏幕,接着处理下一行,模式空间可以理解为流水线,处理完输出接着处理下一行继续输出。sed还有一个保持空间,保持空间可以理解为仓库,处理数据时暂存数据到仓库,如果不使用高级命令这个基本用不到。
数据处理都在内存中,如果不加特定的写入文件命令,sed不会对原文件造成更改

sed 自定义分隔符,选取第一个域数据

cat a1.txt
1:2:3:4:5

cat a1.txt | sed -n ‘s/:.*$//’
1

这里用到了正则表达式,将冒号到结尾的部分都清空,这样就只留下了1

sed 好用的一些选项
替换操作:s命令

sed ‘s/book/books/’ file #将book替换为books

-n一般与-p共同使用,表示只打印修改过的数据

直接编辑文件选项-i,会匹配file文件中每一行的第一个book替换为books:

sed -i ‘s/book/books/g’ file

全面替换标记g

使用后缀 /g 标记会替换每一行中的所有匹配:

sed ‘s/book/books/g’ file

当需要从第N处匹配开始替换时,可以使用 /Ng:

echo sksksksksksk | sed ‘s/sk/SK/2g’
skSKSKSKSKSK

echo sksksksksksk | sed ‘s/sk/SK/3g’
skskSKSKSKSK

echo sksksksksksk | sed ‘s/sk/SK/4g’
skskskSKSKSK

定界符

以上命令中字符 / 在sed中作为定界符使用,也可以使用任意的定界符:

sed ‘s:test:TEXT:g’
sed ‘s|test|TEXT|g’

定界符出现在样式内部时,需要进行转义:

sed ‘s//bin//usr/local/bin/g’

删除操作:d命令

删除空白行:

sed ‘/^$/d’ file

删除文件的第2行:

sed ‘2d’ file

删除文件的第2行到末尾所有行:

sed ‘2,$d’ file

删除文件最后一行:

sed ‘$d’ file

删除文件中所有开头是test的行:

sed '/^test/'d file

已匹配字符串标记&

cat a1.txt
a1
a2
a3
a4
a5

cat a1.txt | sed ‘s/a.*/&1/’
a1a
a2a
a3a
a4a
a5a

&代表之前匹配到的内容

好用的定位行范

//,//
显示已//开头的段落到//结尾的段落内容

sed -n ‘/a1/,/a3/p’ a1.txt
a1
a2
a3

#,# 其中#为数字,代表第一行到第三行

cat a1.txt | sed ‘1,3p’
a1
a2
a3

#,+#其中#为数字,代表第一行到3第三行

cat a1.txt | sed ‘1,+2p’
a1
a2
a3

组合多个表达式

sed ‘表达式’ | sed ‘表达式’
等价于:
sed ‘表达式; 表达式’

多点编辑:e命令

-e选项允许在同一行里执行多条命令

cat a1.txt | sed -e ‘1,3d’ -e ‘s/a/aa/’#删除第一行到第三行;并将a替换为aa

()将内容暂存保持空间

echo “hello world” | sed ‘s/(hello).*/world \1/’
world hello

是括号的预存储技术将括号中hello存起来到\1 \2 \3 …中

内容插入

从文件读入:r命令
file里的内容被读进来,显示在与test匹配的行后面,如果匹配多行,则file的内容将显示在所有匹配行的下面:

sed ‘/test/r file’ filename

追加(行下):a\命令
将字母a追加到以a开头的行后面:

sed ‘/^a/a\a’ a1.txt

在a1.txt文件第2行之后插入字母a

sed -i ‘2a\a’ a1.txt

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值