sed替换字符串

shell脚本sed的基本用法

瘦欲@ 提交于 2019-12-06 16:12:45
sed 我们首先准备了一个测试文件 1. s 替换 将文件中的This替换cyy 在替换的时候如果加入了 -i 选项就会真的替换,但是只会替换每一行的第一个 -n 和 -p 一起使用表示的是打印那些发生替换的行 加入-g的参数是指全部替换,全局的一个参数 当需要从第N处替换的时候,可以加入Ng:这里的N是具体的数 注意:在以上的命令中的字符 / 在sed中作为定界符使用,当让也可以使用任意的定界符 2.删除操作 可以先修改要测试的文件,在这个文件中又空白行 删除所有的空白行 删除文件中的第二行 删除文件的第2行至末尾的所有行 删除文件中的最后一行(在我的文件中的最后一行是一个空白行) 删除文件中以my开头的行 3.已匹配字符串标记& 正则表达式\w\+匹配每一个单词,使用[&]替换他 ,&对应之前所匹配到的单词 字串匹配标记\1 注意:命令中digit 7 被替换程7 样式匹配到的子串是7,\(...\)用于匹配字串,对于匹配到的第一个子串标记为\1 以此类推匹配到的第二个结果就是\2:例如 组合多个表达式 : sed '表达式' | sed '表达式' 注意:sed表达式可以使用单引号来引用,如果表达式内部包含变量字符串,就需要使用双引号 例子:首先定义一个变量 然后将这个变量替换程大写 选定行的范围: 首先是逗号 (,)

iOS应用安全之代码混淆实现篇

感情迁移 提交于 2019-12-05 05:55:47
1.iOS应用安全之代码混淆设计篇 2.iOS应用安全之代码混淆实现篇 针对 设计篇 描述的大致思路,现在针对各个问题点,给出实现方法 该脚本大致使用的工具如下:vi、grep、sed、find、awk、cut、sort、uniq、cat、md5等。 针对要加密的内容,分别给出关键字提取脚本命令。 脚本中 $ROOTFOLDER代表工程根目录, $EXCLUDE_DIR 代表要排除的目录,举例如下: ROOTFOLDER="demoProject" EXCLUDE_DIR="--exclude-dir=*.framework --exclude-dir=include --exclude-dir=libraries --exclude-dir=Libs --exclude-dir=lib" 关键字提取 1.文件名 第一步先将包含路径的文件名写入文件 find $ROOTFOLDER -type f | sed "/\/\./d" >f.list 第二步文件中提取文件名 cat f_rep.list | awk -F/ '{print $NF;}'| awk -F. '{print $1;}' | sed "/^$/d" | sort | uniq 但从文件名提取的功能上,上面两个步骤完全可以合并为一步,但是在实际功能实现中还是要求将上面分为两步的 2.类名 grep -h -r

shell编程之正则表达式(二)sed工具

笑着哭i 提交于 2019-12-04 19:08:27
sed 工具 sed(Stream EDitor)是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑(删除、替换、添加、移动等),最后输出所有行或者仅输出处理的某些行。sed 也可以在无交互的情况下实现相当复杂的文本处理操作,被广泛应用于 Shell 脚本中,用以完成各种自动化处理任务。 sed 的工作流程主要包括读取、执行和显示三个过程。 读取:sed 从输入流(文件、管道、标准输入)中读取一行内容并存储到临时的缓 冲区中(又称模式空间,pattern space)。 执行:默认情况下,所有的 sed 命令都在模式空间中顺序地执行,除非指定了行的地址,否则 sed 命令将会在所有的行上依次执行。 显示:发送修改后的内容到输出流。再发送数据后,模式空间将会被清空。 在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完。 注意:默认情况下,所有的 sed 命令都是在模式空间内执行的,因此输入的文件并不会发生任何变化,除非是用重定向存储输出。 1.sed 命令常见用法 通常情况下调用 sed 命令有两种格式,如下所示。其中,“参数”是指操作的目标文件,当存在多个操作对象时用,文件之间用逗号“,”分隔;而 scriptfile 表示脚本文件,需要用“-f”选项指定,当脚本文件出现在目标文件之前时

linux shell中使用sed命令

佐手、 提交于 2019-12-04 11:04:50
例1:批量的将变量的值代替指定文件中的指定内容。 #!/bin/bash for i in {1..100} mgr_port=`expr $i + 5345` data_port=`expr $i + 6345` site_id=$i `sed -i "s/5347/$mgr_port/g" dmhs.hs` `sed -i 's/6347/'$data_port'/g' dmhs.hs` `sed -i s/2222/$site_id/g" dmhs.hs` `sed -i "s/5347/$mgr_port/g" dmhs.hs` #`eval sed -i 's/6347/$data_port/g' dmhs.hs` done 例2: 删除: $ sed '2d' dmhs.hs --删除dmhs.hs文件的第二行。 $ sed '2,$d' dmhs.hs ---删除dmhs.hs文件的第二行到末尾所有行。 $ sed '$d' dmhs.hs ---删除dmhs.hs文件的最后一行。 $ sed '/test/'d dmhs.hs ---删除dmhs.hs文件所有包含test的行。 替换: $ sed 's/test/mytest/g' dmhs.hs --在整行范围内把test替换为mytest。如果没有g标记,则只有每行第一个匹配的test被替换成mytest。 $

sed

我只是一个虾纸丫 提交于 2019-12-04 10:47:50
s ed 流编辑器 逐行处理文件(或输入),并将结果发送到屏幕。具体过程如下:首先sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空间),然 后处理临时缓冲区中的行,完成后把该行发送到屏幕上。sed每处理完一行就将其从临时缓冲区删除,然后将下一行读入,进行处理和显示。处理 完输入文件的最后一行后,sed便结束运行。sed把每一行都存在临时缓冲区中,对这个副本进行编辑,所以不会修改原文件。 相关命令: a\ 在当前行后添加一行或多行。多行时除最后一行外,每行末尾需用“\”续行 c\ 用此符号后的新文本替换当前行中的文本。多行时除最后一行外,每行末尾需用”\”续行 i\ 在当前行之前插入文本。多行时除最后一行外,每行末尾需用”\”续行 d 删除行 p 打印行 s 用一个字符串替换另一个字符串 g 在行内进行全局替换 w将所选的行写入文件 y将字符替换为另一字符(不能对正则表达式使用y命令) 相关选项: -e进行多项编辑,即对输入行应用多条sed命令时使用 -i 直接修改读取的文件内容,而不是输出到屏幕上 -r 让sed支持扩展的正则表达式(默认是基础的正则表达式) -n 取消默认的输出(默认为输出所有行) -f指定sed脚本的文件名 在字符替换中,可能会遇见引号,“/”等的替换,这时应该注意,sed的命令原型是: sed -i "s/oldstring/goalstring

Linux高级命令 ==> find、grep、sed、awk

邮差的信 提交于 2019-12-03 20:31:27
一、find   find命令用来在指定目录下查找文件。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。 语法 find path -option [ -print ] [ -exec -ok command ] {} \; 常用选项: -name   查找根目录及其子目录下所有以 log 结尾的文件,文件名区分大小写,例如:find / -name '*logf' -iname 查找当前目录及其子目录下所有文件名为 test 的文件,文件名不区分大小写,例如:find . -name test -user    查找文件所属用户为 mysql 的所有文件,例如:find . -user mysql -group 查找文件所属组为 git 的所有文件,例如:find . -group git -type    根据类型查找:如下 f    文件        find . -type f d   目录        find . -type d c   字符设备文件    find . -type c b   块设备文件     find . -type b l    链接文件      find . -type l p   管道文件      find . -type p -size   根据文件大小查询

Linux常用命令

匿名 (未验证) 提交于 2019-12-02 21:56:30
本文总结一些在开发中常用到的Linux命令。 1. vim vim命令用于编辑文件。 普通模式(命令行模式) 123456789 set number/set nu:vim时显示行号 或通过修改vim的配置文件使得每次vim时都显示行号HOME:快速移动到当前行首部END:快速移动到当前行尾部w:移动到下一个单词b:移动到上一个单词:+行号+回车:快速移动到某一行:+$+回车:快速移动到最后一行dd:删除当前行dj:删除当前行和下一行 由普通模式进入插入模式 12345 i:在当前光标处进行编辑I:在行首插入A:在行尾插入o:在当前行后插入一个新行O:在当前行前插入一个新行 由插入模式进入普通模式 1 ESC 2. grep grep命令用于查找文件里符合条件的字符串。 1234567891011 以nba.txt文件为例:cat nba.txt | grep "curry":查找nba.txt中包含curry字符串的所有行并返回cat nba.txt | grep "curry" -v:查找nba.txt中不包含curry字符串的所有行并返回(第一条的取反)cat nba.txt | grep "CuRry" -i:忽略大小写cat nba.txt | grep "curry" -n:显示匹配到的行号cat nba.txt | grep "curry" -c:统计匹配到的结果行数

第七章 Shell正则应用

大憨熊 提交于 2019-12-02 16:38:31
1. 正则表达式概述 01. 什么是正则表达式 正则表达式 regular expression , RE是一种字符模式,用于在查找过程中匹配指定的字符。 02. 为什么要使用正则表达式? 在工作中,我们时刻面对着大量的日志,程序,以及命令的输出。迫切的需要过滤我们需要的一部分内容,甚至是一个字符串。比如: 现在有一个上千行的文件,我们仅需要其中包含"root"的行,怎么办? 此时就需要使用到正则表达式的规则来筛选想要的内容。 03. 正则表达式注意事项 1.正则表达式应用非常广泛,存在于各种语言中,例如:php,python,java等。2.正则表达式和通配符特殊字符是有本质区别的3.要想学好grep、sed、awk首先就要掌握正则表达式。4.注意正则神坑,中文符号。 2. 正则表达式规则 正则表达式描述 \转义符,将特殊字符进行转义,忽略其特殊意义 ^匹配行首,^是匹配字符串的开始 $匹配行尾,$是匹配字符串的结尾 ^$表示空行. (点)匹配换行符之外的任意单个字符 [ ]匹配包含在[字符]之中的任意一个字符 [^]匹配[^]之外的任意一个字符 [a-z]匹配[]中指定范围内的任意一个字符 ?匹配其前面的字符1次或者0次+匹配其前面的字符1次或者多次 匹配其前面的字符0次或者多次**.** *表示所有( )匹配表达式,创建一个用于匹配的字符串 {n}匹配之前的项n次

sed总结

江枫思渺然 提交于 2019-12-01 20:00:52
1、概述 2、查 2、增 3、删 4、改,替换 5、后向引用 1、概述 sed的作用我们就记得两条就可以了:替换和增删除改查,也就是说今后当我们想对文件进行一些文字的替换和增删改查时就要想起sed。 sed的语法主要问成三部分,我们来举一个例子: sed -n 3p /etc/passwd 语法分别是sed <选项-n> <对谁操作,3代表第3行> <干啥p,p代表打印> <要操作的文件> sed的执行过程 : 将文件吸入内存,然后在内存里面处理,处理好之后将空间内的内容倾倒到屏幕。 sed常用的选项其实就三个最为常用 : -n:仅显示处理的行 -r:使其支持扩展的正则表达式 -i:sed默认不改变文件的内容,使用-i会改变文件的内容,慎用! 2、查 1、显示文件的哪一行,或是哪几行,要求我们提示知道要显示的东西哪几一行,如果不知道相要的行在文件当中排名第几,那么可以先用cat -n或是less -N进行查看确认。 [root@localhost test.dir]# sed -n '2,3p' test.txt #重要要体会加-n和不加n的区别,显示文件的第2行和第3行 钱 370831199305162kjl 孙 39083119920516245X [root@localhost test.dir]# sed -n '2,+1p' test.txt #与上面的意思是一样的

shell 第七章 正则的应用

删除回忆录丶 提交于 2019-12-01 18:27:36
第七章 Shell正则应用 1. 正则表达式概述 2. 正则表达式规则 3. 正则表达式之GREP文本过滤 4. 正则表达式之SED文本处理 5. 正则表达式之AWK文本处理 1. 正则表达式概述 01. 什么是正则表达式 正则表达式`regular expression`, RE是一种字符模式,用于在查找过程中匹配指定的字符。 02. 为什么要使用正则表达式? 在工作中,我们时刻面对着大量的日志,程序,以及命令的输出。迫切的需要过滤我们需要的一部分内容,甚至是一个字符串。比如: 现在有一个上千行的文件,我们仅需要其中包含"root"的行,怎么办? 此时就需要使用到正则表达式的规则来筛选想要的内容。 03. 正则表达式注意事项 1.正则表达式应用非常广泛,存在于各种语言中,例如:php,python,java等。 2.正则表达式和通配符特殊字符是有本质区别的 3.要想学好grep、sed、awk首先就要掌握正则表达式。 4.注意正则神坑,中文符号。 2. 正则表达式规则 正则表达式 描述 \ 转义符,将特殊字符进行转义,忽略其特殊意义 ^ 匹配行首,^是匹配字符串的开始 $ 匹配行尾,$是匹配字符串的结尾 ^$ 表示空行 .(点) 匹配换行符之外的任意单个字符 [ ] 匹配包含在[字符]之中的任意一个字符 [^] 匹配[^]之外的任意一个字符 [a-z] 匹配[