热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

linux中sed命令的使用与注意小结

sed本身也是一个管道命令,可以分析standardinput的,sed可以将数据进行替换、删除、新增、选取特定行等。下面这篇文章主要介绍了linux中sed命令的用法和注意事项,需要的朋友可以参考借鉴,下面来一起看看吧。

前言

sed是一种流编辑器,它是文本处理中非常有用的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为『模式空间』(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。sed主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等。

sed的用法

$ sed [-nefr] [动作]

参数:

  • -n : 使用安静模式。在一般sed用法中,所有来自STDIN的数据一般都会被列出到屏幕上。但如果加上-n参数后,则只有经过sed特殊处理的那一行(或者操作)才会被列出来。
  • -e : 直接在命令行模式上进行sed的动作编辑。(默认)
  • -f : 直接将sed的动作写在一个文件内, -f filename则可以执行filename内的sed动作。
  • -r : sed的动作支持的是扩展型正则表达式的语法(默认是基础正则表达式语法)。
  • -i : 直接修改读取的文件内容,而不是屏幕输出。

默认情况下sed不直接作用于读取的文件中

动作说明: [n1[,n2]] function

  • n1,n2 : 不见得会存在,一般代表选择进行动作的行数,举例来说,如果我的动作是需要在10到20行之间进行的,则“10,20[动作行为]”。

function 有下面的这些参数:

  • a : 新增到下一行,后面可以接字符串
  • c : 替换,后面可以接字符串
  • d : 删除,后面不接热河参数
  • i : 插入到上一行,后面可接字符串
  • p : 打印,通常会与参数 sed -n 一起运行
  • s : 查找并替换特定字符串,通常搭配正则表达式。

     例如,1,20s/old/new/g

演示

//假设有text文件

$ sed '2,5d' text #将第2~5行删除
$ sed '2a hahaha' text #在第二行后加上“hahaha”字样
$ sed '2a hahaha\
> xixixi' text #在第二行后加上两行字
$ sed '2,5c No 2-5 number' text #将第2~5行的内容替换成为“No 2-5 number”,是整行替换
$ sed -n '5,7p' text #将5~7行打印出来,一定要加 -n
$ sed 's/hahaha/ssss/g' text #将hahaha字段替换成ssss,这是部分数据的查找并替换

sed还可以和正则表达式配合使用

如:

$ sed 's/^h/ssss/g' text #将h开头的字段替换成ssss

注意

  1. sed后面接的动作,务必以两个单引号括住。
  2. 使用p(打印)参数时,sed一定要用-n,否则所有的行都会被输出,这样就没有意义了。
  3. sed默认不直接作用于读取的文件中。
  4. -i参数要慎用,它会直接修改读取的文件内容。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。


推荐阅读
  • 本文探讨了为何在Linux系统上进行项目开发的重要性,并详细介绍了如何在Ubuntu系统上安装PyCharm这一流行的Python集成开发环境(IDE)。通过本文,您将了解在Linux环境下进行Python开发的优势及具体安装步骤。 ... [详细]
  • VS Code 中 .vscode 文件夹配置详解
    本文介绍了 VS Code 中 .vscode 文件夹下的配置文件及其作用,包括常用的预定义变量和三个关键配置文件:launch.json、tasks.json 和 c_cpp_properties.json。 ... [详细]
  • 本文档提供了首次周测的答案解析,涵盖特殊符号、命令作用、路径说明以及实战练习等内容。 ... [详细]
  • Kubernetes 实践指南:初次体验
    本文介绍了如何通过官方提供的简易示例,快速上手 Kubernetes (K8S),并深入理解其核心概念和操作流程。 ... [详细]
  • 本文提供了一个详尽的前端开发资源列表,涵盖了从基础入门到高级应用的各个方面,包括HTML5、CSS3、JavaScript框架及库、移动开发、API接口、工具与插件等。 ... [详细]
  • 本文详细介绍了 JavaScript 中 Split 方法的使用方式和一些实用技巧。通过示例,我们将探讨如何利用 Split 方法有效地分割字符串,并获取所需的数据。 ... [详细]
  • 本文详细介绍了如何在Oracle VM VirtualBox中实现主机与虚拟机之间的数据交换,包括安装Guest Additions增强功能,以及如何利用这些功能进行文件传输、屏幕调整等操作。 ... [详细]
  • 利用 Calcurse 在 Linux 终端高效管理日程与任务
    对于喜爱使用 Linux 终端进行日常操作的系统管理员来说,Calcurse 提供了一种强大的方式来管理日程安排、待办事项及会议。本文将详细介绍如何在 Linux 上安装和使用 Calcurse,帮助用户更有效地组织工作。 ... [详细]
  • Jupyter Notebook多语言环境搭建指南
    本文详细介绍了如何在Linux环境下为Jupyter Notebook配置Python、Python3、R及Go四种编程语言的环境,包括必要的软件安装和配置步骤。 ... [详细]
  • 深入掌握 Python:Pandas 数据处理与分析
    本课程为 Python 进阶系列的第四部分,专注于 Pandas 库的高级应用。课程将涵盖数据分析、数据可视化及数据预处理等多个方面,旨在帮助学员全面掌握 Pandas 在数据科学中的应用。 ... [详细]
  • 帝国cms各数据表有什么用
    CMS教程|帝国CMS帝国cmsCMS教程-帝国CMS精易编程助手源码,ubuntu桥接设置,500错误是tomcat吗,爬虫c原理,php会话包括什么,营销seo关键词优化一般多 ... [详细]
  • 本指南详细介绍了 Maya 2014 中的粒子和对象属性,帮助用户更好地理解和利用这些功能进行复杂的动画和特效制作。同时推荐学习《鹫》造型上色的完整流程视频教程。 ... [详细]
  • Web动态服务器Python基本实现
    Web动态服务器Python基本实现 ... [详细]
  • Markdown 编辑技巧详解
    本文介绍如何使用 Typora 编辑器高效编写 Markdown 文档,包括代码块的插入方法等实用技巧。Typora 官方网站:https://www.typora.io/ 学习资源:https://www.markdown.xyz/ ... [详细]
  • 小编给大家分享一下Vue3中如何提高开发效率,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获, ... [详细]
author-avatar
zjlwansui_155
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有