文本处理—sed

本文详细介绍了Linux下的sed命令,它是一种流编辑器,用于非交互式地处理文件,按照指定的模式匹配过滤和修改文本。文章涵盖了sed的功能简介、语法格式、语法说明,包括选项和动作的解释,以及丰富的典型示例,如基本处理动作、文本块处理和常见操作,展示了sed在文本编辑和自动化任务中的强大能力。
摘要由CSDN通过智能技术生成

目录

一、功能简介

二、语法格式

三、语法说明

1、选项说明

2、动作说明

四、典型示例

基本的处理动作

sed文本块处理

常见处理操作示例

五、综合运用


一、功能简介

sed(Stream EDitor),是一种流文件编辑器,其特点为:

1、非交互式。处理文件时,把当前处理的行存储在临时缓冲区(称为“模式空间”(Pattern Space))中,即它是基于模式匹配过滤及修改文本。 //类比:Vim是一个交互的编辑器

2、逐行处理,sed 命令在缓冲区中一次处理一行内容,处理完成后,把缓冲区的内容送往屏幕,接着处理下一行,直到文件末尾。

正常情况下,sed命令所做的处理只是把操作结果(包括打印、删除等)输出到当前终端屏幕,而并不会对原始文件做任何更改。若希望直接修改文件内容,应添加选项 -i 。为了避免生产环境中因误操作导致系统故障,使用时要谨慎。

sed 主要用来编辑一个或多个文件,简化对文件的反复操作(如:输出、删除、替换、复制、剪切、导入、导出等各种操作)或者用来编写转换程序等。

二、语法格式

格式1: 前置命令 | sed  [选项]   '[定址符]处理动作'   [input-file] 

格式2:sed  [选项]   '[定址符]处理动作’   [input-file] 

其中:处理动作可以由-e指定多个处理动作,input-file为输入文件,可指定多个

三、语法说明

1、选项说明

-i:直接修改文件内容,而不是输出到终端。

-n:安静模式,屏蔽默认输出(全部文本),只有经过sed特殊处理的那一行才会被列出来。

-e :指定sed动作,可以由多个-e指定多个动作。

-r:启用扩展的正则表达式,若与其他选项一起使用,应作为首个选项

-f :直接将sed的动作写在一个文件内,-f filename则可以运行filename 内的sed动作;

--help:显示帮助。

--version:显示版本。

-{}:可组合多个命令,以分号分隔

2、动作说明

[n1[,n2]] function

其中:

  • [n1[,n2]]称为定址符,用来定义需要操作的文本,如指定处理的起、止行数

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

    • 地址可表示为文本的“行号”,或者用来匹配的“/正则表达式/”

    • 省略定址符时,默认逐行处理全部文本。

  • fuction为编辑指令,可以为增删改查等指令

a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行);

i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);

c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行;

d :删除,因为是删除,所以 d 后面通常不接任何内容;

p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行;

s :替换,通常这个s的动作可以搭配正规表示法!例如 1,20s/old/new/g。

四、典型示例

基本的处理动作

替换担任的分隔“/”,可改用其他字符,如#、&等,便于修改文件路径

示例:把/bin/bash替换为/sbin/sh (/etc/passwd)

# sed "s/\/bin\/bash/\/sbin\/sh/" /etc/passwd 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值