Linux 三大编辑神器 - sed (中集)

Posted Simon Gan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 三大编辑神器 - sed (中集)相关的知识,希望对你有一定的参考价值。

本文介绍的是sed,在编辑时候,更多新鲜实用的做法。

  • w 另存爲文件(相當於Ctrl+s)
  • s 數字格式替換

示例一:

#將test.txt裏面的内容另存爲output
sed \'w output.txt\' test.txt

示例二:

#將test.txt的第二行插入102,上海并保存為output
#分號;可以一行執行多條語句
sed \'2i 102,上海;w output.txt\' test.txt

sed \'[地址范围|模式范围]\' \\
s#[被替换的字符串]#[替换后的字符串]#[替换标志] [输入文件]

替换标志 g全局标志 数字标志1,2,3 ;

  • 打印p
  • 写入w
  • 忽略大小写i
  • 执行命令标志 e

實例1:


cat gg.text
#第一列可以全部替換
sed \'s#1#0#1\' gg.text
#第二列的第一行替換
sed \'2s#1#0#1\' gg.text
#第二,第三列的第一行替換
sed \'2,3s#1#0#1\' gg.text
#第一行的全部替換
sed \'2s#1#0#1g\' gg.text
#第二行從第4個開始全部替換
sed \'2s#1#0#4g\' gg.text
#第二第三行的第4行開始全部替換
sed \'2,3s#1#0#2g\' gg.text

#sed 行數替換範圍1<N<512

实际情况:
如何同时执行多条语句?

#方法1: -e 
#删除第2列数据 并将文件中的01全部替换成10 结果另存为output.txt 
sed -e \'2d\' -e \'s#01#10#g\' -e \'w output.txt\' test.txt

#方法2: 分号隔开
sed \'2d;s#01#10#g;w output.txt\' test.txt

#方法3: sed -f 接上sed脚本
cat manul.sed
#在脚本里面输入内容:
2d
s#01#10#g
w output.txt

sed -f manul.sed test.txt

小实例:如何获取行号

#先提取行号,然后对换行的地方统统替换成空格。
sed \'=\' test.txt | sed \'N;s#\\n# #\' 

# cat -n 选项
cat -n test.txt

小实例:对相同范围做多种不同操作
类似乘法分配律

sed -n \'2,4{p;=}\' test.txt
sed -n \'2,4p;2,4=\' test.txt

小实例:输出不可见字符
l 打印文本中TAB键\\t和行尾标志$

sed -n \'l\' test.txt

小实例:字符替换
y 参数 内容格式和s///或者s###一致

sed \'y/111/222/g\' test.txt
tr \'111\' \'222\' < test.txt

小实例:读取文件添加写入
r 参数 + 要被读取的文件名

sed \'r testb.txt\' testa.txt

#在第一行添加插入
sed \'1r testb.txt\' testa.txt

#在最后一行添加插入,等价于文件合并
sed \'$r testb.txt\' testa.txt

以上是关于Linux 三大编辑神器 - sed (中集)的主要内容,如果未能解决你的问题,请参考以下文章

6.2 bash编程 整数测试及特殊变量

Linux学习42 必备技能-文本处理神器sed命令应用与实战

linux 三大利器 grep sed awk sed

linux三大文件处理工具(grep/sed/awk)

Linux学习笔记13——sed基本用法

Linux的awk、grep、sed工具,实现文本查找、编辑 、格式化