Linux sed命令执行方式汇总案例

声明与简介

sed:Stream Editor文本流编辑,sed是一个“非交互式的”面向字符流的编辑器。Sed的命令执行主要介绍如何引用sed脚本内容或者执行内置sed解释器的脚本,命令执行的详细使用说明见下文。本文主要以实际的数据来介绍sed的命令行执行方式。

数据说明

如下是使用的示例文本数据,这里的行号是为了方便解释结果,不是文本内容。

1 7369,smith,clerk,7902,'1980-12-17',800,null,20
2 7499,allen,salesman,7698,'1981-2-20',1600,300,30
3 7521,ward,salesman,7698,'1981-2-22',1250,500,30
4 7566,jones,manager,7839,'1981-4-2',2975,null,20
5 7654,martin,salesman,7698,'1981-9-28',1250,1400,30
6 7655,jack,manager,7698,'1987-3-28',1600,1800,10
7 7656,tim,clerk,7902,'1982-12-12',1400,1400,30
8 7657,kate,clerk,7902,'1989-11-11',1400,1800,10
9 7698,blake,manager,7839,'1981-5-1',2850,null,30
10 7699,dlake,salesman,7839,'1983-6-15',3000,null,10
11 7782,clark,manager,7839,'1981-1-9',2450,null,10
12 7788,scott,analyst,7566,'1982-12-9,3000,null,20,scott
13 7839,king,president,null,'1981-11-17',5000,null,10
14 7844,turner,salesman,7698,'1981-12-8',1500,0,30
15 7876,adams,clerk,7788,'1983-1-12',1100,null,20
16 7900,james,clerk,7698,'1981-12-3',950,null,30
17
18 --7902,ford,analyst,7566,'1981-12-3',3000,null,20
19
20 7934,miller,clerk,7782,'1982-1-23',1300,null,10

命令行执行

单行执行多条命令

# 1 找出含有scoot、james、martin的行
sed -n -e '/scott/p' -e '/james/p' -e '/martin/p' emp.txt# 执行结果
7654,martin,salesman,7698,'1981-9-28',1250,1400,30
7788,scott,analyst,7566,'1982-12-9',3000,null,20
7900,james,clerk,7698,'1981-12-3',950,null,30#注: 这里加了-n,即只显示受影响的行。

反斜杠执行多行多条命令

# 2 通过反斜杠的方式将多个命令罗列在一起串联执行。
sed -n -e '/scott/p' \
-e '/james/p' \
-e '/martin/p' \
emp.txt# 结果
7654,martin,salesman,7698,'1981-9-28',1250,1400,30
7788,scott,analyst,7566,'1982-12-9',3000,null,20
7900,james,clerk,7698,'1981-12-3',950,null,30#注:多行执行需要加上”\”让命令换行。

大括号执行多行多条命令

# 3 将命令包裹在大括号内
sed -n '{
/scott/p
/james/p
/martin/p
}' emp.txt#注: 这里的文件名emp.txt不能换行输出,即需要和“}’”在一行上。

脚本文件仅含处理逻辑

引用脚本文件方式调用

# 1 定义文件,sed的处理逻辑定义在该文件内,外部仍已sed来调用。
# Step 1 创建个sed脚本文件,这里后缀名不一定是.sed。
vi replace_demo.sed# Step 2 输入如下内容:
/scott/p
/james/p
/martin/p# Step 3 赋予可执行权限
Chmod +x  replace_demo.sed# Step 4 调用脚本文件
sed -nf ./replace_demo.sed emp.txt# 结果如下
7654,martin,salesman,7698,'1981-9-28',1250,1400,30
7788,scott,analyst,7566,'1982-12-9',3000,null,20
7900,james,clerk,7698,'1981-12-3',950,null,30#注:这里调用时需要写 –nf而不是 –fn,即n必须在前。不然会报错sed: couldn't open file n: No such file or directory

脚本内注释

# sed脚本内通过”#”来注释,针对上例Step2,我们注释第2行。再次执行查看效果
/scott/p
#/james/p
/martin/p#结果如下所示,即第二行未执行。
7654,martin,salesman,7698,'1981-9-28',1250,1400,30
7788,scott,analyst,7566,'1982-12-9',3000,null,20

脚本文件含解释器执行

脚本文件直接执行

#该方式直接调用脚本文件,无需外部加sed命令,因为脚本文件里已经内置sed解释器。# Step 1 定义个sed的脚本文件,比如这里命名为replace_interpreter.sed
vi replace_interpreter.sed# Step 2 在replace_interpreter.sed文件里加入如下内容
#!/bin/sed -nf
/scott/p
#/james/p
/martin/p# Step 3 给replace_interpreter.sed赋予可执行权限
chmod +x replace_interpreter.sed# Step 4 调用脚本文件
./replace_interpreter.sed emp.txt# 结果如下:
7654,martin,salesman,7698,'1981-9-28',1250,1400,30
7788,scott,analyst,7566,'1982-12-9',3000,null,20

打开高效文本编辑之门_调用Linux的sed命令相关推荐

  1. 打开高效文本编辑之门_熟悉Linux Sed的替换命令

    Linux sed S替换命令常见使用案例 声明与简介 sed:Stream Editor文本流编辑,sed是一个"非交互式的"面向字符流的编辑器.本文主要以实际的数据来介绍sed ...

  2. 打开高效文本编辑之门_Linux sed之多行命令与循环命令

    Linux sed之多行命令与循环命令使用案例 声明与简介 sed:Stream Editor文本流编辑,sed是一个"非交互式的"面向字符流的编辑器. sed模式匹配是对文件的一 ...

  3. 打开高效文本编辑之门_Linux Sed模拟常见文件命令

    Linux sed 实现grep cat wc tail命令的效果对比案例 声明与简介 sed:Stream Editor文本流编辑器,sed是一个"非交互式的"面向字符流的编辑器 ...

  4. 打开高效文本编辑之门_Linux awk之关联数组

    Linux awk之关联数组使用案例 声明与简介 AWK 是一种处理文本文件的语言,是一个强大的文本分析工具.awk通常用来处理结构化(固定格式)的文本文件, awk每接收文件的一行,然后执行相应的命 ...

  5. 打开高效文本编辑之门_Linux awk之自定义变量与操作符

    Linux awk之自定义变量与操作符 声明与简介 AWK 是一种处理文本文件的语言,是一个强大的文本分析工具.awk通常用来处理结构化(固定格式)的文本文件, awk每接收文件的一行,然后执行相应的 ...

  6. 打开高效文本编辑之门_Linux sed之模式空间与保留空间

    Linux sed之模式空间保留空间使用案例 声明与简介 sed:Stream Editor文本流编辑器,sed是一个"非交互式的"面向字符流的编辑器.本文主要结合数据以案例形式介 ...

  7. 打开高效文本编辑之门_Linux Awk之条件判断与循环

    Linux awk之条件判断与循环 声明与简介 AWK 是一种处理文本文件的语言,是一个强大的文本分析工具.awk通常用来处理结构化(固定格式)的文本文件, awk每接收文件的一行,然后执行相应的命令 ...

  8. 打开高效文本编辑之门_Linux Awk自定义变量与操作符

    Linux awk之变量与操作符应用案例 声明与简介 AWK 是一种处理文本文件的语言,是一个强大的文本分析工具.awk通常用来处理结构化(固定格式)的文本文件, awk每接收文件的一行,然后执行相应 ...

  9. 打开高效文本编辑之门_Linux Sed插入追加转换退出等命令应用

    Linux sed 追加转换退出更新修改转换命令使用案例 声明与简介 sed:Stream Editor文本流编辑,sed是一个"非交互式的"面向字符流的编辑器. sed其它命令汇 ...

最新文章

  1. 把三千行代码重构为15行
  2. 去掉ILDasm的SuppressIldasmAttribute限制
  3. RMAN备份filesperset用法
  4. ES 在数据量很大的情况下如何提高查询效率
  5. LeetCode MySQL 1571. 仓库经理
  6. idea的英文是什么意思_idealisation是什么意思中文翻译
  7. session演练1909051059
  8. mac chrome 打包扩展程序
  9. CSS3 浮动与定位
  10. 在 OSX 10.9.4 上编译安装 FastDFS 及其 PHP 扩展
  11. 谈话节目APE系列:如何成为技术达人
  12. bch编码matlab,BCH码的编码方法.doc
  13. CCFCSP历年认证考试真题解答汇总(已解决20道,持续更新ing)
  14. 洞见科技创始人姚明:隐私计算让数据穿上“防护服”的同时,还能充分释放数据价值...
  15. R语言使用qcauchy函数生成柯西分布分位数函数数据、使用plot函数可视化柯西分布分位数函数数据(Cauchy distribution)
  16. oracle column name as sign,Oracle日常性能查看 - ella的个人空间 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
  17. 【Redis】Redis数据库
  18. 【Python】绘制热力图seaborn.heatmap,cmap设置颜色的参数
  19. Shopee本土店如何做,各国家站点市场分析及热销产品
  20. Python大疆相片/航片/照片的内容信息获取:以m300为例JPG

热门文章

  1. VTK:AnimateActors用法实战
  2. wxWidgets:在 Unix (GTK+) 下打印
  3. boost::spirit模块实现将由某个分隔符分隔的任意键/值对解析为 std::map的测试程序
  4. boost::sort模块实现使用不区分大小写的字符串键对结构进行排序的示例
  5. boost::log::core用法的测试程序
  6. hana::detail::variadic::split_at用法的测试程序
  7. boost::hana::when_valid用法的测试程序
  8. Boost:验证atomic <>不会在成员指针上提供算术运算
  9. ITK:计算网格的平面参数化
  10. DCMTK:测试图像像素模块功能