sed替换字符串

linux中sed用法

為{幸葍}努か 提交于 2020-01-17 07:08:04
sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下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 ∶取代,可以直接进行取代的工作哩!通常这个 s

sed命令实例

≯℡__Kan透↙ 提交于 2020-01-17 06:48:01
   删除: d命令$ sed '2d' example-----删除example文件的第二行。   $ sed '2,$d' example-----删除example文件的第二行到末尾所有行。   $ sed '$d' example-----删除example文件的最后一行。   $ sed '/test/'d example-----删除example文件所有包含test的行。    替换: s命令$ sed 's/test/mytest/g' example-----在整行范围内把test替换为mytest。如果没有g标记,则只有每行第一个匹配的test被替换成mytest。   $ sed -n 's/^test/mytest/p' example-----(-n)选项和p标志一起使用表示只打印那些发生替换的行。也就是说,如果某一行开头的test被替换成mytest,就打印它。   $ sed 's/^192.168.0.1/&localhost/' example-----&;符号表示替换换字符串中被找到的部份。所有以192.168.0.1开头的行都会被替换成它自已加localhost,变成192.168.0.1localhost。   $ sed -n 's/\(love\)able/\1rs/p' example-----love被标记为1

sed 处理一行,替换 删除

情到浓时终转凉″ 提交于 2020-01-03 03:45:24
sed option 'action' filename (文件可多个) option: -i 直接在原文件中修改! -n 安静模式,默认情况所有数据都会被列出,但-n只有经过动作处理的那一行才被列出(结合p使用) 2. 选项-action 动作:'[n1[,n2]]function' 表示对n1、n2之间的行进行处理! function: d 删除当前行,sed '2,5d' 删除2~5行 g 获得内存缓冲区的内容,并替代当前模板块中的文本。配合s使用,否则只替换一行中的第一个! a 将后续的字符新增一行到目前的下一行,sed '2a drink tea \(插入多行分隔符) ...' ,添加行 i 同上,插入到当前的前一行,添加行 c 替换,用后续的字符串替换n1 , n2之间的行,sed '2,5c No number 2-5' s 替换单个词,sed '1,20s/old/new/g' ,使用可参考vi替换,s#可将#作为分隔符(紧跟s) p 打印,将选中的行打印出来,通常和sed -n 一起使用,sed -n '5,7p' ,只显示5~7行, P 打印第一行! 3. 示例 行首插入字符: sed -i '2s/^/\t/g' file_name //直接修改源文件 行位插入字符: sed -i 's/$/啥话/g' 123.log 删除指定行: sed '2d' ;

linux shell 之在线文本编辑sed

百般思念 提交于 2020-01-01 13:36:36
sed命令 sed是一种文本编辑命令,读取文件数据到缓冲区,然后通过sed编辑文本,在输出到指定的文件,sed 是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,sed按行处理文本数据,不断重复,直到文件末尾。可同时处理多个文件; 先讲个实例,大家看到如下一堆字符串,这是有多个sed命令表达式组合成的命令,|表示多个表达式的组合,\表示换行,冒号中s表示替换,g表示全部替换;$0是第一个输入参数,是一个文件名称,第一行意思是读取文件中的数据,将IVMS_SERVICE=0全部替换成IVMS_SERVICE=1,这里只是字符替换;第二行是将变量$SVC_PROG全部替换掉IVMS_SERVICE_PROG,第四行是先替换,然后将缓冲区中的数据输入到变量$SVC_SYS_FILE标记的文件中; # create service bash sed -e "s%IVMS_SERVICE=0%IVMS_SERVICE=1%g" $0 | \ sed -e "s%IVMS_SERVICE_PROG%$SVC_PROG%g" | \ sed -e "s%IVMS_SERVICE_NAME%$SVC_NAME%g" | \ sed -e "s%IVMS_SERVICE_DIR%$SVC_DIR%g" > $SVC_SYS_FILE sed的选项、命令、替换标记 命令格式

Sed 命令

坚强是说给别人听的谎言 提交于 2020-01-01 13:35:17
sed的选项、命令、替换标记 命令格式 sed [options] 'command' file(s) sed [options] -f scriptfile file(s) 选项 -e<script>或--expression=<script>:以选项中的指定的script来处理输入的文本文件; -f<script文件>或--file=<script文件>:以选项中指定的script文件来处理输入的文本文件; -h或--help:显示帮助; -n或--quiet或——silent:仅显示script处理后的结果; -V或--version:显示版本信息。 参数 文件:指定待处理的文本文件列表。 sed命令 a\ 在当前行下面插入文本。 i\ 在当前行上面插入文本。 c\ 把选定的行改为新的文本。 d 删除,删除选择的行。 D 删除模板块的第一行。 s 替换指定字符 h 拷贝模板块的内容到内存中的缓冲区。 H 追加模板块的内容到内存中的缓冲区。 g 获得内存缓冲区的内容,并替代当前模板块中的文本。 G 获得内存缓冲区的内容,并追加到当前模板块文本的后面。 l 列表不能打印字符的清单。 n 读取下一个输入行,用下一个命令处理新的行而不是用第一个命令。 N 追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码。 p 打印模板块的行。 P(大写) 打印模板块的第一行。 q

Linux Shell 文本处理工具集锦

杀马特。学长 韩版系。学妹 提交于 2019-12-13 07:42:24
来自:me115, www.cnblogs.com/me115/p/3427319.html 本文将介绍Linux下使用Shell处理文本时最常用的工具: find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk; 提供的例子和参数都是最常用和最为实用的; 我对shell脚本使用的原则是命令单行书写,尽量不要超过2行; 如果有更为复杂的任务需求,还是考虑python吧; find 文件查找 查找txt和pdf文件 find . \ ( -name "*.txt" -o -name "*.pdf" \ ) -print 正则方式查找.txt和pdf find . -regex ".*\(\.txt|\.pdf\)$" -iregex:忽略大小写的正则 否定参数 查找所有非txt文本 find . ! -name "*.txt" -print 指定搜索深度 打印出当前目录的文件(深度为1) find . -maxdepth 1 -type f 定制搜索 按类型搜索: find . -type d -print //只列出所有目录 -type f 文件 / l 符号链接 按时间搜索: -atime 访问时间 (单位是天,分钟单位则是-amin,以下类似) -mtime 修改时间 (内容被修改) -ctime 变化时间 (元数据或权限变化)

Linux 文本处理批量查找与替换

不打扰是莪最后的温柔 提交于 2019-12-11 09:37:26
# 搜索含有特定字符串在某个目录并打印出文件名 grep -rl "www.baidu.com" /data * -r, --recursive like --directories=recurse * -l, --files-with-matches print only names of FILEs containing matches # 批量查找与替换 sed -i "s/原字符串/新字符串/g" `grep 原字符串 -rl 所在目录` sed -i "s/原字符串/新字符串/g" `grep 原字符串 -rl 所在目录` # 统计数量 grep -rl "www.googletagmanager.com" ./en/| xargs ls -al|wc -l 来源: https://www.cnblogs.com/boundless-sky/p/12020585.html

Linux(二)高级文本处理

做~自己de王妃 提交于 2019-12-10 11:55:34
一、cut ( cut 命令可以从一个文本文件或者文本流中提取文本列 ) 1、cut语法 cut -d '分隔字符' -f fields 用于有特定分隔字符 cut -c 字符区间 用于排列整齐的信息 选项与参数: -d :后面接分隔字符。与 -f 一起使用 -f :依据 -d 的分隔字符将一段信息分割成为数段,用 -f 取出第几段的意思 -c :以字符 (characters) 的单位取出固定字符区间 2、例: echo $PATH /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin 将 PATH 变量取出,找出第五个路径 echo $PATH | cut -d ':' -f 5 /usr/sbin 将 PATH 变量取出,找出第三和第五个路径 echo $PATH | cut -d ':' -f 3,5 /sbin:/usr/sbin 将 PATH 变量取出,找出第三到最后一个路径 echo $PATH | cut -d ':' -f 3- /sbin:/bin:/usr/sbin:/usr/bin:/root/bin 将 PATH 变量取出,找出第一到第三,还有第五个路径 echo $PATH | cut -d ':' -f 1-3,5 /usr/local/sbin:/usr

Linux下批量替换 快速清空文件内容的方法

老子叫甜甜 提交于 2019-12-09 20:02:10
1、网络资料 格式: sed -i “s/查找字段/替换字段/g” `grep 查找字段 -rl 路径` linux sed 批量替换多个文件中的字符串 sed -i “s/oldstring/newstring/g” `grep oldstring -rl yourdir` 例如:替换/home下所有文件中的 www.admin99.net 为admin99.net sed -i “s/ www.admin99.net/admin99.net/g ” `grep www.admin99.net -rl /home` exp:sed -i “s/shabi/$/g” `grep shabi -rl ./` 2、自己额外附加 2.1 将文件1.txt内的文字“garden”替换成“mirGarden” # sed -i “s/garden/mirGarden/g” 1.txt //sed -i 很简单 2.2 将当前目录下的所有文件内的“garden”替换成“mirGarden” ## sed -i “s/garden/mirGarden/g” `ls` //其实也就是ls出多个文件名而已 快速清空文件内容的方法:   $ : > filename #其中的 : 是一个占位符, 不产生任何输出.   $ > filename   $ echo “” > filename   $

常用文本处理命令

跟風遠走 提交于 2019-12-06 18:55:29
目录 一、awk 基本句式 过滤记录 指定分隔符 特殊关键字: 正则 输出到不同的文件 和环境变量的交互 二、grep 三、sed 四、sort和uniq 五、实战 处理以下文件内容,将域名取出并进行计数排序,如处理: awk例子 Linux中很多文本工具都使用到了正则表达式,正则表达式可以极大的简化linux系统管理工作,因为网上有很多正则相关的教程,所以这里不再讲述,我当时看的是菜鸟的 正则表达式 ,看个一下午在实验几遍基本就会了,除了正向肯定预查,反向肯定预查这几个比较复杂一些,其他都是非常简单的,很多时候记不住也可以查询网上对着写,并不需要你实时记住。这里主要谈谈awk等用到正则表达式的文本处理工具。 一、awk awk的指令必须包含在单引号中。 基本句式 awk -F'指定输入分隔符' 'BEGIN{做一些初始化工作} 一些过滤条件 {针对每行的工作}... END{最后收尾工作}' 中间的处理块可以有多个,通过过滤条件单每行都会走一遍过滤条件,其中BEGIN和END边只会执行一遍 过滤记录 awk '$3==0 && $6=="LISTEN" ' netstat.txt awk '$3==0 && $6=="LISTEN" || NR==1 ' netstat.txt 指定分隔符 awk -F: '{print $1,$3,$6}' /etc/passwd 等价于