sed替换字符串

Shell编程之sed工具

核能气质少年 提交于 2020-02-26 01:22:31
一、sed介绍 1.sed用来做啥? 2.sed如何处理文件? 二、sed使用方法介绍 1.命令行格式 1)语法格式 2)举例说明 2.脚本格式 1)用法 2)注意事项 3)举例说明 3.补充扩展总结 三、课堂练习 四、课后实战 一、sed介绍 1. sed用来做啥? sed是Stream Editor(流编辑器)的缩写,简称流编辑器;用来==处理文件==的。 2. sed如何处理文件? sed是==一行一行读取==文件内容并==按照要求==进行==处理==,把处理后的结果==输出到屏幕==。 首先sed读取文件中的一行内容,把其保存在一个==临时缓存区中==(也称为模式空间) 然后==根据需求==处理临时缓冲区中的行,完成后把该行==发送到屏幕上== 总结: 由于sed把每一行都存在临时缓冲区中,对这个 副本 进行编辑,所以==不会直接修改原文件== Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作,对文件进行过滤和转换操作 二、sed使用方法介绍 sed常见的语法格式有两种,一种叫==命令行==模式,另一种叫==脚本==模式。 1. 命令行格式 1)语法格式 sed [options] == ' ==处理动作 =='== 文件名 常用选项 选项 说明 备注 -e 进行多项(多次)编辑 ==-n== 取消默认输出 不自动打印模式空间 ==-r== 使用扩展==正则表达式

sed 命令

白昼怎懂夜的黑 提交于 2020-02-21 10:21:29
sed命令详解 2015-09-21 常识积累 热度4175℃ 2条评论 概述 sed是stream editor的简称,也就是流编辑器。它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。 使用语法 sed命令的使用规则是这样的: 1 sed [option] 'command' input_file 其中option是可选的,常用的option有如下几种: -n 使用安静(silent)模式(想不通为什么不是-s)。在一般sed的用法中,所有来自stdin的内容一般都会被列出到屏幕上。但如果加上-n参数后,则只有经过sed特殊处理的那一行(或者动作)才会被列出来; -e 直接在指令列模式上进行 sed 的动作编辑; -f 直接将 sed 的动作写在一个文件内, -f filename 则可以执行filename内的sed命令; -r 让sed命令支持扩展的正则表达式(默认是基础正则表达式); -i 直接修改读取的文件内容,而不是由屏幕输出。 常用的命令有以下几种: a \: append即追加字符串, a \的后面跟上字符串s(多行字符串可以用\n分隔)

Linux下的sed命令使用详解

空扰寡人 提交于 2020-02-18 07:20:56
sed是stream editor的简称,也就是流编辑器。它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”pattern space,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。 使用语法 sed命令的使用规则是这样的: sed [option] 'command' input_file 其中option是可选的,常用的option有如下几种: -n 使用安静silent模式(想不通为什么不是-s)。在一般sed的用法中,所有来自stdin的内容一般都会被列出到屏幕上。但如果加上-n参数后,则只有经过sed特殊处理的那一行(或者动作)才会被列出来; -e 直接在指令列模式上进行 sed 的动作编辑; -f 直接将 sed 的动作写在一个文件内, -f filename 则可以执行filename内的sed命令; -r 让sed命令支持扩展的正则表达式(默认是基础正则表达式); -i 直接修改读取的文件内容,而不是由屏幕输出。 常用的命令有以下几种: a \:追加行append, a \的后面跟上字符串s(多行字符串可以用\n分隔),则会在当前选择的行的后面都加上字符串s; c \:取代/替换行change,c \后面跟上字符串s

6. 使用sed -i对文本字符串进行增删改查

ぐ巨炮叔叔 提交于 2020-02-10 08:56:04
sed是一个很好的文件处理工具,本身是一个管道命令,主要以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作。 1. sed命令行格式 sed [选项] [命令] 1.1 选项 -n,使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过 sed特殊处理的那一行(或者动作)才会被列出来。 -e,直接在命令列模式上进行sed的动作编辑。 -f,直接将sed的动作写在一个文件内。-f filename 则可以运行filename内的sed命令。 -r,sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法) -i,直接修改读取的文件内容,而不是输出到终端。 1.2 指定行数 [n1[,n2]]function n1, n2,不一定存在,一般代表“选择进行动作的行数”,如果我的动作需要在10到20行之间进行,则有’10,20命令’ 1.3 常用命令 a,新增,a的后面可以接字符串,而这些字符串会在新的一行出现(目前的下一行) c,取代,c的后面可以接字符串,这些字符串可以取代n1,n2 之间的行 d,删除,因为是删除,所以d后面通常不接任何东西 i,插入,i的后面可以接字符串,而这些字符串会在新的一行出现(目前的上一行) p,输出,即将某个选择的文件输出

Linux之sed用法

陌路散爱 提交于 2020-02-09 11:19:45
sed(stream editor)是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法 sed命令行格式为: sed [-nefri] ‘command’ 输入文本 常用选项: -n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。 -e∶直接在指令列模式上进行 sed 的动作编辑; -f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作; -r∶sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法) -i∶直接修改读取的档案内容,而不是由萤幕输出。 常用命令: a ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~ c ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行! d ∶删除,因为是删除啊,所以 d 后面通常不接任何咚咚; i ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行); p ∶列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~ s ∶取代

sed命令详解

浪尽此生 提交于 2020-01-30 09:39:02
sed命令应用广泛,使用简单,是快速文本处理的利器。它其实没多少技巧,背诵、使用是最合适的学习渠道,属于硬技能。但它又很复杂,因为高级功能太多。本篇不去关注sed的高级功能,仅对常用的一些操作,进行说明。 随着使用,你会发现它和vim的一些理念是想通的,正则表达式的语法也基本上一样,并没有多少学习成本。从个人视野和工作效率上来看,sed命令都是程序员必须掌握的一个重要工具。 那些说可以现场google用法的,大多习惯将文本拷贝到excel里,慢慢磨洋工,遇到大批量文件更是手忙脚乱。不是一家人不进一家门,本文不是为你写的。 一个简单的入门 如图,一个简单的sed命令包含三个主要部分:参数、范围、操作。要操作的文件,可以直接挂在命令行的最后。除了命令行,sed也可以通过-f参数指定一个sed脚本,这个属于高级用法,不做过多描述。 有些示例命令我会重复多次,聪明如你一定能发现其中规律,有时连解释都用不着。 参数 -n 这个参数是--quiet或者--silent的意思。表明忽略执行过程的输出,只输出我们的结果即可。 我们常用的还有另外一个参数 :-i。 使用此参数后,所有改动将在原文件上执行。你的输出将覆盖原文件。 非常危险 ,一定要注意。 范围 1,4 表示找到文件中1,2,3,4行的内容。 这个范围的指定很有灵性,请看以下示例(请自行替换图中的范围部分)。 5 选择第5行。 2,5

sed命令

拥有回忆 提交于 2020-01-27 13:42:21
sed命令   sed, 即Stream Editor,是linux系统中一种行编辑器 用法   sed [OPTION]... {script-only-if-no-other-script} [input-file]... 常用选项 -n 不输出模式空间内容到屏幕,即不自动打印 -e 多点编辑 -f /PATH/SCRIPT_FILE 从指定文件中读取编辑脚本 -r 支持使用扩展正则表达式 -i 直接在源文件上修改,且不备份 -i.bak 对源文件进行备份,文件名FILE.bak,然后在源文件上编辑 script script中的内容可以分为两大类,地址定界和命令。 地址定界,即对需要匹配的行划定范围,可以通过指定具体的行数,比如5,或者2到9行;也可以通过正则表达式来确定。 命令,即对通过地址匹配到的行进行的操作,包括打印、删除等。 地址定界 不给地址:对全文进行处理 单地址: #: 指定的行 /pattern/:被此处模式所能够匹配到的每一行 地址范围: #,# #,+# /pat1/,/pat2/ #,/pat1/ ~:步进 1~2 奇数行 2~2 偶数行 编辑命令 d 删除模式空间匹配的行 p 显示模式空间中的内容 a [\]text 在指定行后面追加文本 支持使用\n实现多行追加 i[\]text 在行前面插入文本 c [\]text 替换行为单行或多行文本 w

sed与awk

心已入冬 提交于 2020-01-27 13:19:44
sed 擅长取行, awk 命令擅长取列 sed 格式 : sed <option> <script> <file> file不指定则默认为 STDIN option -e : 执行多个命令 命令之间必须用分号隔开 命令末尾和分号之间不能有空格 例子: sed -e 's/brown/green/; s/dog/cat/' data.txt -f : 从文件读取命令 每个命令一行,无需分号 例子: sed -f script.sed data.txt -n :不产生命令输出,用 p 完成输出 -i : 直接修改 文件中的数据 sed默认 不会修改 文件数据,而是把修改后的数据发送到 STDOUT -i.backup 自动备份源文件 script s 命令 :用第二个斜线间的字符串替换第一个斜线间的 匹配的模式(正则) 格式: sed '[address] s/pattern/replace/[flag]' 默认只替换每行第一处匹配的字符串 替换标记(flag) <数字> :第几处模式匹配的地方 g :替换所有匹配的文本 p :配合 -n option 只打印被修改过得行 sed -n 's/test/dev/p' in.txt 也可以用来 输出指定行 输出3-6行: sed -n '3,6/p' in.txt w <file> :把修改过得行写入文件,同时打印所有行(包括没修改的)

shell#正则表达式&sed

好久不见. 提交于 2020-01-21 18:47:00
--字符串 字符串的初值(备用值),变量非空是不可使用 ${变量名:-xxxxx} ------------------------------------------------------------------------------------------------- 一丶正则表达式 正则表达式 可以配合某工具对文档进行过滤筛选 head -5 > user grep '^root' user //以root开头的行 grep 'bash$' user //以bash结尾的行 grep '[0-9]' user //筛选出0-9的数字 grep '[^0-9]' user //排除所有0-9的数字 grep 'roo.' user //筛选roo开头的匹配单个字符 grep 'ro*t' user //筛选出现任意次o的字符,可以是0次---rt rot rooooot 像 小部件 grep "0:0:\{2\}" user //筛选0:出现两次的字符串 扩展正则表达式 二丶sed 流式编辑器 图像 小部件可以对文本文件进行非交互式增删改查,逐行处理 sed使用方式 1.前置命令|sed 选项 (定址符)指令o 2.sed 选项(定址符)指令 被处理文件 选项 -n 屏蔽默认输出 -r 支持扩展正则 -i 写入文件 指令 p 输出 d 删除 s 替换 [root@svr5

vim字符串替换命令

我与影子孤独终老i 提交于 2020-01-21 11:12:45
:%s/str1/str2/g 替换每一行中所有str1为str2 常用! :s/str1/str2/g 替换当前行所有str1为str2 基本替换 :s/str1/str2/ 替换当前行第一个str1为str2 :s/str1/str2/g 替换当前行所有str1为str2 :n,$s/str1/str2/ 替换第 n 行开始到最后一行中每一行的第一个str1为str2 :n,$s/str1/str2/g 替换第 n 行开始到最后一行中每一行所有str1为str2 (n 为数字,若 n 为 .,表示从当前行开始到最后一行) :%s/str1/str2/(等同于 :g/str1/s//str2/) 替换每一行的第一个str1为str2 :%s/str1/str2/g(等同于 :g/str1/s//str2/g) 替换每一行中所有str1为str2 可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符 :s#str1/#str2/# 替换当前行第一个str1/ 为str2/ :%s+/str11/str12/+/str21/str22+ (使用+ 来 替换 / ): /str11/str12/替换成/str21/str22/ 文件中删除^M 问题描述:对于换行,Windows下用回车换行(0A0D)来表示,Linux下是回车(0A)来表示。这样