sed替换字符串

linux批量替换文件内容3种方法(perl,sed,shell)

梦想与她 提交于 2019-12-01 16:22:22
方法1: 这两天在构建一个应用的使用用到了maven,由于project很大,足足有700多个 pom.xml文件,更郁闷的是在很多pom.xml文件里都单独指定了资源库的url,我需要把这些资源库的url统一指定到nexus本地中央库. 手 工一个个改文件配置有点不太实际,所以google了一下,找到批量替换文件内容的好方法,命令结构如下: find -name '要查找的文件名' | xargs perl -pi -e 's|被替换的字符串|替换后的字符串|g'下面这个例子就是将当前目录及所有子目录下的所有pom.xml文件中的”http://repo1.maven.org/maven2“ 替换为”http://localhost:8081/nexus/content/groups/public“. find -name 'pom.xml' | xargs perl -pi -e 's|http://repo1.maven.org/maven2|http://localhost:8081/nexus/content /groups/public|g'这里用到了Perl语言, perl -pi -e 在Perl 命令中加上-e 选项,后跟一行代码,那它就会像运行一个普通的 Perl 脚本 那样运行该代码. 从命令行中使用Perl 能够帮助实现一些强大的、实时的转换。

Linux常用命令

我怕爱的太早我们不能终老 提交于 2019-12-01 10:39:56
df 显示 文件系统的 磁盘统计信息 -a 包含全部的文件系统; -h 以可读性较高的方式来显示信息; du 命令用于显示目录或文件的大小 -a 显示该目录下的所有文件大小 -h 提高信息的可读性 -b 以字节为单位进行显示 fdisk 硬盘分区命令 eg. fdisk /dev/sda1 编辑 /dev/sda1分区,执行之后按照提示可以硬盘进行分区 mkfs 格式化磁盘命令 -t 指定文件系统的类型; eg. mfks -t ext3 /dev/sda2 mount 挂载系统命令 mount <device> <mount point> 将设备device挂载到mount point下 -a 加载文件”/etc/fstab”中描述的所有文件系统 对应 的卸载命令 umount <device> fstab文件 配置文件 / etc / fstab包含自动执行分区安装过程的必要信息,语法如下: [Device] [Mount Point] [File System Type] [Options] [Dump] [Pass] 字段的含义如下: <Device> 包含文件系统的设备/分区(通常为/dev或UUID) <[Mount Point> 挂载点,可以从中访问设备/分区的内容(注意:swap没有挂载点) < File System Type > 文件系统的类型 <

Linux正则表达式

时光怂恿深爱的人放手 提交于 2019-12-01 07:45:05
在计算机科学中,正则表达式是这样解释的:它是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。许多程序设计语言都支持利用正则表达式进行字符串操作。对于系统管理员来讲,正则表达式贯穿在我们的日常运维工作中,无论是查找某个文档,抑或查询某个日志文件分析其内容,都会用到正则表达式。 其实正则表达式,只是一种思想,一种表示方法。只要我们使用的工具支持表示这种思想那么这个工具就可以处理正则表达式的字符串。常用的工具有grep, sed, awk 等,下面笔者就介绍一下这三种工具的使用方法。 【 grep / egrep 】 笔者在前面的内容中多次提到并用到grep命令,可见它的重要性。所以好好学习一下这个重要的命令吧。你要知道的是grep连同下面讲的sed, awk都是针对文本的行才操作的。 语法: grep [-cinvABC] ‘word’ filename -c :打印符合要求的行数 -i :忽略大小写 -n :在输出符合要求的行的同时连同行号一起输出 -v :打印不符合要求的行 -A :后跟一个数字(有无空格都可以),例如 –A2则表示打印符合要求的行以及下面两行 -B :后跟一个数字,例如 –B2 则表示打印符合要求的行以及上面两行 -C :后跟一个数字,例如 –C2

sed学习系列---第2/3部分

爷,独闯天下 提交于 2019-11-30 22:18:41
---简介 sed 是十分强大和小巧的文本流编辑器。在本文章系列的第二篇中,Daniel Robbins 为您演示如何使用 sed 来执行字符串替换、创建更大的 sed 脚本以及如何使用 sed 的附加、插入和更改行命令。 sed 是很有用(但常被遗忘)的 UNIX 流编辑器。在以批处理方式编辑文件或以有效方式创建 shell 脚本来修改现有文件方面,它是十分理想的工具。本文是 前一篇介绍 sed 文章的续篇。 ---替换! 让我们看一下 sed 最有用的命令之一,替换命令。使用该命令,可以将特定字符串或匹配的规则表达式用另一个字符串替换。下面是该命令最基本用法的示例: $ sed -e 's/foo/bar/' myfile.txt 上面的命令将 myfile.txt 中每行第一次出现的 'foo'(如果有的话)用字符串 'bar' 替换,然后将该文件内容输出到标准输出。请注意,我说的是 每行第一次出现 ,尽管这通常不是您想要的。在进行字符串替换时,通常想执行全局替换。也就是说,要替换每行中的 所有 出现,如下所示: $ sed -e 's/foo/bar/g' myfile.txt 在最后一个斜杠之后附加的 'g' 选项告诉 sed 执行全局替换。 关于 's///' 替换命令,还有其它几件要了解的事。首先,它是一个命令,并且只是一个命令,在所有上例中都没有指定地址。这意味着,

awk sed grep 常用命令

帅比萌擦擦* 提交于 2019-11-30 16:16:37
文本间隔 在每一行后面增加一空行: sed G sed G v1 >v2 在每一行后面增加两行空行: sed 'G;G' 将第一个脚本所产生的所有空行删除(即删除所有偶数行): sed 'n;d' 在匹配式样“regex”的行之前插入一空行: sed '/regex/{x;p;x;}' 在匹配式样“regex”的行之后插入一空行: sed '/regex/G' 在匹配式样“regex”的行之前和之后各插入一空行: sed '/regex/{x;p;x;G;}' 编号 为文件中的每一行进行编号(简单的左对齐方式)。这里使用了“制表符”(tab,见本文末尾关于'\t'的用法的描述)而不是空格来对齐边缘: sed = filename | sed 'N;s/\n/\t/' 对文件中的所有行编号(行号在左,文字右端对齐): sed = filename | sed 'N; s/^/ /; s/ *\(.\{6,\}\)\n/\1 /' 对文件中的所有行编号,但只显示非空白行的行号: sed '/./=' filename | sed '/./N; s/\n/ /' 计算行数 (模拟 "wc -l"): sed -n '$=' 文本转换和替代 Unix环境:转换DOS的新行符(CR/LF)为Unix格式: sed 's/.$//' # 假设所有行以CR/LF结束 sed 's/^M$//'

linux 一些脚本语法

我只是一个虾纸丫 提交于 2019-11-30 03:50:00
sed是用来处理文本的 s/正则表达式/替换字符串/ :表示将正则表达式的内容替换为后面的字符串 g :表示替换全部,即如果不加g,则只会替换第一个 比如更改很多数据库的某个字段 update.sql {   ALTER TABLE db.role CHANGE LIE1 LIE2 mediumblob DEFAULT NULL; } updatedb.sh {   for(int i =1;i <= 100; i++)   do     name = world$i     cat update.sql | sed "s/db/$name/g" | mysql -h -u -p   done }   来源: https://www.cnblogs.com/hhxj/p/11556068.html

【Linux】sed命令用法详解

橙三吉。 提交于 2019-11-29 21:52:57
http://witmax.cn/linux-sed-usage.html http://www.linuxsir.org/bbs/showthread.php?t=189620 Sed学习笔记 1. sed简介 sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。以下介绍的是Gnu版本的Sed 3.02。 2. 定址 可以通过定址来定位你所希望编辑的行,该地址用数字构成,用逗号分隔的两个行数表示以这两行为起止的行的范围(包括行数表示的那两行)。如1,3表示1,2,3行,美元符号($)表示最后一行。范围可以通过数据,正则表达式或者二者结合的方式确定 。 3. sed命令 调用sed命令有两种形式: sed [options] ‘command’ file(s) sed [options] -f scriptfile file(s) a\ 在当前行后面加入一行文本。 b lable 分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾。 c\

sed

淺唱寂寞╮ 提交于 2019-11-29 21:10:59
sed 1 # 先读取资料、存入模式空间、对其进行编辑、再输出、再用下一行替换模式空间内容 2 # 调试工具sedsed (参数 -d) http://aurelio.net/sedsed/sedsed-1.0 3 4 -n # 输出由编辑指令控制(取消默认的输出,必须与编辑指令一起配合) 5 -i # 直接对文件操作 6 -e # 多重编辑 7 -r # 正则可不转移特殊字符 8 9 b # 跳过匹配的行 10 p # 打印 11 d # 删除 12 s # 替换 13 g # 配合s全部替换 14 i # 行前插入 15 a # 行后插入 16 r # 读 17 y # 转换 18 q # 退出 19 20 & # 代表查找的串内容 21 * # 任意多个 前驱字符(前导符) 22 ? # 0或1个 最小匹配 没加-r参数需转义 \? 23 $ # 最后一行 24 .* # 匹配任意多个字符 25 \(a\) # 保存a作为标签1(\1) 模式空间 1 # 模式空间(两行两行处理) 模式匹配的范围,一般而言,模式空间是输入文本中某一行,但是可以通过使用N函数把多于一行读入模式空间 2 # 暂存空间里默认存储一个空行 3 n # 读入下一行(覆盖上一行) 4 h # 把模式空间里的行拷贝到暂存空间 5 H # 把模式空间里的行追加到暂存空间 6 g #

Linux Shell 文本处理工具集锦

百般思念 提交于 2019-11-28 23:57:12
本文将介绍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 变化时间 (元数据或权限变化) 最近7天被访问过的所有文件: find . -atime 7 -type f -print 按大小搜索

27.sed

試著忘記壹切 提交于 2019-11-28 21:58:04
9.4/9.5 sed 9.4 sed: sed支持grep的一些用法 但不会显示颜色 以下是介绍 p 的用法: ~1. sed ‘/root/'p test.txt 写法是这样的 并不会带颜色 并会把所有的都打印出来 ~2. sed -n '/root/'p test.txt 加上-n就会只打印带root的行 ~3. sed -n '/r.t/'p test.txt 同样支持 . ~4. sed -n '/r*t/'p tset.txt 同样支持* ~5. sed -nr ’/o+t/'p test.txt -r不脱意的话,要加-r 同样支持+(一次和多次) ~6. sed -nr '/o{2}/'p test.txt -r不加脱意符的话,要加-r 同样支持{},o出现2次 ~7. sed -nr '/root|bus/'p test.txt -r不加脱意符的话,要加-r 同样支持|,root和bus ~8. sed -n '2'p test.txt '2'p只列出第二行 ‘2,5’p列出2-5行 ‘2,$'p列出25-末行。$表示末行 ~9. sed -e '1'p -e '/bus/'p -n test.txt 运行多条命令 可多次使用-e。结尾不要忘记加-n,否则会列出所有 ~10. sed -n '/bus/'Ip test.txt I(大写I)类似于grep的-i