sed替换字符串

linux基础命令:sed

痴心易碎 提交于 2019-11-28 00:00:47
sed命令行格式为: sed [-nefri] ‘command’ 输入文本/文件 常用选项: -n∶取消默认的输出,使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到屏幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来 -e∶进行多项编辑,即对输入行应用多条sed命令时使用. 直接在指令列模式上进行 sed 的动作编辑 -f∶指定sed脚本的文件名. 直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作 -r∶sed 的动作支援的是延伸型正则表达式的语法。(预设是基础正则表达式语法) -i∶直接修改读取的文件内容,而不是由屏幕输出 常用命令: a ∶ 新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行) c ∶ 取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行 d ∶ 删除,因为是删除,所以 d 后面通常不接任何内容 i ∶ 插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行) p∶ 列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起用 s∶ 取代,可以直接进行替换的工作。通常这个 s 的动作可以搭配正则表达式。例如 1,20s/old/new/g 定址

继续做一道linux的企业 面试题

守給你的承諾、 提交于 2019-11-27 21:50:19
把/dongdaxia目录及其子目录小所有以拓展名.sh结尾的文件中包含dongdaxia的字符串全部替换为dj。 解答:这道题还是用到了三剑客里的sed: 第一步:先在/dongdaxia目录及其子目录下创建多个以.sh和.txt结尾的文件,并且每个文件都输出‘dongdaxia' 第二步:查找并替换 第二种方法:把改成dj的文件在重新替换成dongdaxia sed -i 's#dj#dongdaxia#g' `find /dongdaxia -type f -name "*.sh" ` 来源: https://www.cnblogs.com/dongxu2019/p/11379095.html

linux常用的shell文本处理方法

拥有回忆 提交于 2019-11-27 03:09:45
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 变化时间 (元数据或权限变化) 最近7天被访问过的所有文件: find . -atime 7 -type f -print 按大小搜索:w字 k M G寻找大于2k的文件 find . -type f -size +2k 按权限查找: find . -type f -perm 644 -print //找具有可执行权限的所有文件 按用户查找: find . -type f -user weber -print// 找用户weber所拥有的文件 找到后的后续动作 删除

sed用法详解

社会主义新天地 提交于 2019-11-27 00:03:04
Sed 简介 sed 是一种新型的,非交互式的编辑器。它能执行与编辑器 vi 和 ex 相同的编辑任务。 sed 编辑器没有提供交互式使用方式,使用者只能在命令行输入编辑命令、指定文件名,然后在屏幕上查看输出。 sed 编辑器没有破坏性,它不会修改文件,除非使用 shell 重定向来保存输出结果。默认情况下,所有的输出行都被打印到屏幕上。 Sed 命令格式 1 sed 命令行格式为: sed [选项] ‘ command ’ 输入文本 Sed 定位 Sed 命令在没有给定的位置时,默认会处理所有行; Sed 支持一下几种地址类型: 1 、 first~step 这两个单词的意思: first 指起始匹配行, step 指步长,例如: sed -n 2~5p 含义:从第二行开始匹配,隔 5 行匹配一次,即 2,7,12....... 。 2 、 $ 这个 $ 符表示匹配最后一行。 3 、 /REGEXP/ 这个是表示匹配正则那一行,通过 // 之间的正则来匹配。 4 、 \cREGEXPc 这个是表示匹配正则那一行,通过 \c 和 c 之间的正则来匹配 ,c 可以是任一字符 5 、 addr1 , add2 定址 addr1 , add2 决定用于对哪些行进行编辑。地址的形式可以是数字、正则表达式或二者的结合。如果没有指定地址, sed 将处理输入文件中的所有行。如果定址是一个数字

sed 的部分实例

折月煮酒 提交于 2019-11-26 18:36:25
摘自: http://www.tsnc.edu.cn/tsnc_wgrj/doc/sed.htm 删除: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'

Shell脚本 (四)正则表达式 grep sed awk 工具

余生颓废 提交于 2019-11-26 03:09:12
正则表达式定义 正则表达式,又称正规表达式、常规表达式 是使用单个字符串来描述、匹配一系列符合某个句法规则的字符串 · 正则表达式组成 普通字符 大小写字母、数字、标点符号及一些其他符号 元字符 在正则表达式中具有特殊意义的专用字符 · 基础正则表达式示例 查找特定字符 利用中括号[]来查找集合字符 查找行首^与行尾字符$ 查找任意一个字符.与重复字符 查找连续字符范围{} · 基础正则表达式的常见元字符 ^、$、.、\、 、[ ]、[^ ]、[n1-n2]、{n}、{n,}、{n,m} · ####查找特定字符#### n--表示显示行号 i--表示不区分大小写 v--表示反向选择 · grep -n 'the' test.txt grep -in 'the' test.txt grep -vn 'the' test.txt · ####利用中括号'[]'来查找集合字符 grep -n 'sh[io]rt' test.txt ####找i或者是o的,只去其中一个 grep -n 'oo' test.txt ####查找重复单个字符'oo' grep -n '[^w]oo' test.txt ####查找'oo'前面不是'w'的字符串 grep -n '[^a-z]oo' test.txt ####查找oo前面不带小写字母的 grep -n '[0-9]' test.txt ###

批量替换文件内容

泪湿孤枕 提交于 2019-11-26 00:46:48
1:查找 find . -type f -name "*.html"|xargs grep ‘yourstring’ 2:查找并替换 find -name '要查找的文件名' | xargs perl -pi -e 's|被替换的字符串|替换后的字符串|g' perl -pi -e 在Perl 命令中加上-e 选项,后跟一行代码,那它就会像运行一个普通的Perl 脚本那样运行该代码. 从命令行中使用Perl 能够帮助实现一些强大的、实时的转换。认真研究正则表达式,并正确地使用,将会为您省去大量的手工编辑工作。 3:批量修改文件夹权限 find . -type -d -name *.html|xargs chmod 755 4:批量修改文件权限 find . -type -f -name *.html|xargs chmod 644 查找和替换是很常用的操作。 这里介绍的小小技巧可以使你很轻松地完成大量重复、繁琐的工作。 以例子进行说明 在当前目录下的.c文件中查找字符串"password" grep "password" *.c 在当前目录及其多个子目录中查找文件test.c find . -name "test.c" -print 在当前目录及其多个子目录中查找.vbs文件并删除之 find . -name "*.vbs" -exec rm {} \;