1 Sed语法介绍

介绍Sed支持的基本命令及其命令行语法,Sed可以通过以下两种形式进行调用:

学习sed命令使用之前,需要掌握正则表达式的用法。

sed [-n] [-e] 'commands' files
sed [-n] -f script files

sed 命令列可以分为编辑指令与文件部分。其中编辑指令负责所有的编辑工作,文件表示所处理的文档。

其中,sed是用他的地址参数决定编辑对象,使用它的函数参数进行编辑。

sed 可以以命令行的方式进行执行,加-e,sed 还可以以脚本的方式进行执行,加-f

1.1 在命令行上执行sed指令

当编辑指令在命令行上进行执行的时候需要加上-e,其命令格式如下:

sed -e '编辑命令1' -e '编辑命令2' .....   files
  • 所有的编辑指令都在-e之后,并且在两个''之间。
  • 编辑指令的执行是从左到右的,一般在编辑指令不多的时候,往往使用命令行进行执行

例1

删除yel.dat内1-10行的数据,将其余文字中的yellow改为black

 sed -e '1,10d' -e 's/yellow/black/g' yel.dat
  • 1,10d--表示删除1-10行
  • s--表示替换
  • g--表示全部替换
  • s/查找词/替换词/g

1.2 sed编辑命令

[address1 [,address2]] function[argument]
  • address1,address2--表示为行数
  • function--sed内置函数

1.2.1 address 参数表示方法

  • 删除文件内第10行数据
sed -e '10d' test.txt
  • 删除含有'man'字符串的行
sed -e '/man/d' test.txt
  • 删除文档第2行到第100行数据
sed -e '2,100d' test.txt
  • 删除第10行含有'man'字符串的数据行
sed -e '10,/man/d' test.txt

注意:

  1. 如果使用正则表达式需要在正则表达式前后加/
// 删除含有两个t字母的数据行
sed -e '/t.*t/d' test.txt
  1. 在没有地址参数时候,全部数据参与编辑
  2. 只有一个地址参数的时候,地址所在行参与编辑运算
  3. address1,address2--表示起始行以及结束行,在之间进行编辑

    下面举几个例子进行说明:
//删除文件内所有的数据行
sed -e 'd' file //删除第5行
sed -e '5d' file //删除第一行到有apple字符串的一行
sed '1,/apple/d' file //删除有apple字符串的行到有orange字符串的行
sed -e '/apple/,/orange/' file

1.2.2 常见的命令参数

命令 参数
# 注释
d 删除数据
s 替换字符串
p 输出

1.3 执行脚本中的编辑命令

当执行的指令太多,在命令行中书写命令十分的不方便,此时可以将这些指令存储到一个脚本文件(script_file)中,用选项-f script_file进行执行。

sed -f script_file file
//书写一个脚本文件,命名为ysb.scr
//脚本内容如下
1,10d
s/yellow/black/g //指向脚本内容
sed -f ysb.scr yel.dat
  • sed执行脚本文件的时候是从上到下进行执行的
  • sed可以-e与-f进行混合使用,执行原则是从左到右,从上到下

1.4 同时对多个文件进行编辑

sed可以一次编辑多个文档,他们跟在编辑指令之后

  • 替换white.dat、rad.dat、black.dat文件内的yellow字符串转变为blue
sed -e 's/yellow/blue/g' white.dat red.dat black.dat
  • sed 按照书写顺序依次进行执行

1.5 执行输出控制

命令中的选项-n表示输出由编辑指令进行控制,sed原本会自动进行输出,加上-n之后输出由编辑命令控制。-n需要与编辑命名进行配合使用。

比如:输出while.dat文件中含有white字符串的数行

sed -n -e '/white/p' white.dat

02-Sed语法介绍的更多相关文章

  1. JavaScript学习02 基础语法

    JavaScript学习02 基础语法 JavaScript中很多基础内容和Java中大体上基本一样,所以不需要再单独重复讲了,包括: 各种算术运算符.比较运算符.逻辑运算符: if else语句.s ...

  2. Swift翻译之-Swift语法入门 Swift语法介绍

    目录[-] Hello world - Swift 简单赋值 控制流 函数与闭包 对象和类 枚举与结构 协议和扩展 泛型 2014.6.3日,苹果公布最新编程语言Swift,Swift是一种新的编程语 ...

  3. flex弹性布局语法介绍及使用

    一.语法介绍 Flex布局(弹性布局) ,一种新的布局解决方案 可简单.快速的实现网页布局 目前市面浏览器已全部支持1.指定容器为flex布局 display: flex; Webkit内核的浏览器, ...

  4. freemarker语法介绍及其入门教程实例

    # freemarker语法介绍及其入门教程实例 # ## FreeMarker标签使用 #####一.FreeMarker模板文件主要有4个部分组成</br>####  1.文本,直接输 ...

  5. QSS类的用法及基本语法介绍

    QSS类的用法及基本语法介绍 目录 1. 何为Qt样式表2. 样式表语法基础3. 方箱模型4. 前景与背景5. 创建可缩放样式6. 控制大小7. 处理伪状态8. 使用子部件定义微观样式8.1. 相对定 ...

  6. Nmap原理02 - 版本探测介绍(上)

    Nmap原理02 - 版本探测介绍(上) 1.介绍 本文将介绍如何通过修改或添加nmap-service-probes文件来实现对nmap中未知服务的探测,首先介绍服务和版本探测的相关信息,然后介绍服 ...

  7. MD基本语法介绍

    Markdown基本语法介绍 前言 文本编辑器一般用的有富文本编辑器(也就是Word)和md了,但是wold太过于花里胡哨很多功能都用不上,所以就选择md了,简单实用,一对于我来说一般就用标题和列表就 ...

  8. Markdown 语法介绍

    Markdown 语法介绍 from:https://coding.net/help/doc/project/markdown.html 文章内容 1 Markdown 语法介绍 1.1 标题 1.2 ...

  9. css基本概念与css核心语法介绍

    css基本概念 css是什么?不需要了解太多文字类介绍,记住css是层叠样式表,HTML是页面结构,css负责页面样式,javascrt负责静态页面的交互.CSS 能够对网页中元素位置的排版进行像素级 ...

  10. c基本语法介绍

    c语言基本语法介绍 1.把常量定义为大写字母形式,是一个很好的编程实践.

随机推荐

  1. LcdTools如何实现PX01读取SD中BIN文件并通过端口发出去

    在实际应用中我们会碰到需要下载很大容量固件,比如TP固件几百K大小BIN文件,这种情况下用LcdTools写初始化代码的方式实现就不大现实:此时我们可以通过PX01 SD来实现. 首先,把需要操作的B ...

  2. 14.api根路由

    我们可以通过使用超链接来提高我们APi的内聚力和可发现性   一.为我们的API创建一个根路径 我们的视图有很多个url,但是没有一个入口点,可以使用@api_view创建一个根路径 #views.p ...

  3. Java多线程(5):CAS

    您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来- 在JDK1.5之前,Java的多线程都是靠synchronized来保证同步的,这会引起很多性能问题,例如死锁.但随着Java的不断完善,JNI ...

  4. python tcp select 多路复用

    1 #!/usr/bin/python 2 # -*- coding: UTF-8 -*- 3 # 文件名:tcpserver.py 4 5 import socket 6 import time 7 ...

  5. 「浙江理工大学ACM入队200题系列」问题 F: 零基础学C/C++39——求方程的解

    本题是浙江理工大学ACM入队200题第四套中的F题 我们先来看一下这题的题面. 由于是比较靠前的题目,这里插一句.各位新ACMer朋友们,请一定要养成仔细耐心看题的习惯,尤其是要利用好输入和输出样例. ...

  6. javax.script.ScriptException: Cannot find engine named: 'nashorn', ensure you set language field in JSR223 Test Element: JSR223 预处理程序

    jmeter运行脚本报错,跟java版本有关,做个记录. 1. 问题记录: 执行登录接口测试,登录失败.点击jmeter右上角[黄色!],查看错误日志.显示如下: 2022-09-23 10:29:5 ...

  7. ClickHouse(10)ClickHouse合并树MergeTree家族表引擎之ReplacingMergeTree详细解析

    目录 建表语法 数据处理策略 资料分享 参考文章 MergeTree拥有主键,但是它的主键却没有唯一键的约束.这意味着即便多行数据的主键相同,它们还是能够被正常写入.在某些使用场合,用户并不希望数据表 ...

  8. 成熟企业级开源监控解决方案Zabbix6.2关键功能实战-下

    @ 目录 实战 Zabbix server源码安装使用示例 部署 配置 Zabbix agent2使用示例 部署 配置 Zabbix proxy使用示例 部署 配置 自定义监控使用示例 触发器使用示例 ...

  9. 修复 docker build 错误 "ERROR: No build stage in current context"

    若 docker build 时遇到了错误 "ERROR: No build stage in current context",则有可能是没有将 FROM 命令语句放置在第一行. ...

  10. Containerd 如何配置 Proxy?

    前言 在某些 air gap 场景中,往往需要离线或使用代理 (Proxy), 例如: 需要通过 Proxy pull 容器镜像: Docker Hub: docker.io Quay: quay.i ...