sed

sed工具使用

巧了我就是萌 提交于 2020-02-08 03:03:27
语法 sed [-hnV][-e<script>][-f<script文件>][文本文件] 参数说明 : -e<script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。 -f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。 -h或--help 显示帮助。 -n或--quiet或--silent 仅显示script处理后的结果。 -V或--version 显示版本信息。 动作说明 : a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~ c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行! d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚; i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行); p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~ s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦! 举例子 文件内容如下: 1.把/etc/passwd拷贝到root/test.txt文件。sed打印出所有行 说明:在正则表达式中,^表示行的开始,$表示行的结尾,空行可以用^$表示。 2

remove token repeatedly if line does not start with #

↘锁芯ラ 提交于 2020-02-07 18:53:05
问题 I want to remove all commas from my text file unless a line starts with # for example: a, b, c #a, b, c should turn to: a b c #a, b, c I don't mind double scan the file but I want to do that with sed 回答1: You could try the below sed command, $ sed '/^ *#/!s/,//g' file a b c #a, b, c ^ asserts that we are at the start. So the above command will match the lines which starts with zero or more spaces and a # symbol. Then the following ! makes the sed to inverse the selections ie, it forces the

第十节 正则表达式

二次信任 提交于 2020-02-07 09:52:23
第1章 什么是正则表达式 正则表达式就是为了处理大量的文本|字符串而定义的一套规则和方法 通过定义的这些特殊符号的辅助,系统管理员就可以快速过滤,替换或输出需要的字符串。Linux正则表达式一般以行为单位处理。 简单说 为处理大量文本|字符串而定义的一套规则和方法 以行为单位出来,一次处理一行 正则表达式是一种描述一组字符串的模式,类似数字表达式,通过各种操作符组成更小的表达式 第2章 为何使用正则表达式 linux运维工作,大量过滤日志工作,化繁为简。 简单,高效。 正则表达式高级工具;三剑客都支持 第3章 容易混淆的两个注意事项 正则表达式应用非常广泛,存在于各种语言中,php perl grep sed awk 支持。ls * 通配符 但现在学的是Linux中的正则表达式,最常应用正则表达式的命令是grep(egrep),sed,awk。 正则表达式和通配符有本质区别 正则表达式用来找:【文件】内容,文本,字符串。一般只有三剑客支持 通配符用来找:文件名,普通命令都支持 第4章 正则表达式使用注意事项 linux正则表达式以行为单位处理字符串 便于区别过滤出来的字符串,一定配合grep/egrep命令学习。 注意字符集,exportLC_All=C:无论何时,做何事都要注意字符集 第5章 正则表达式的分类 POSIX规范将正则表达式的分为了两种 基本正则表达式(BRE

linux之sed用法

孤人 提交于 2020-02-07 09:47:34
sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法 sed命令行格式为: sed [-nefri] ‘command’ 输入文本 常用选项: -n∶在一般 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

linux 正则表达式

匆匆过客 提交于 2020-02-07 06:47:27
正则表达式 标签(空格分隔):Linux实战教学笔记 --- 更多资料点我查看 第1章 什么是正则表达式 正则表达式就是为了处理大量的文本|字符串而定义的一套规则和方法 通过定义的这些特殊符号的辅助,系统管理员就可以快速过滤,替换或输出需要的字符串。Linux正则表达式一般以行为单位处理。 简单说 为处理大量文本|字符串而定义的一套规则和方法 以行为单位出来,一次处理一行 正则表达式是一种描述一组字符串的模式,类似数字表达式,通过各种操作符组成更小的表达式 第2章 为何使用正则表达式 linux运维工作,大量过滤日志工作,化繁为简。 简单,高效。 正则表达式高级工具;三剑客都支持 第3章 容易混淆的两个注意事项 正则表达式应用非常广泛,存在于各种语言中,php perl grep sed awk 支持。ls * 通配符 但现在学的是Linux中的正则表达式,最常应用正则表达式的命令是grep(egrep),sed,awk。 正则表达式和通配符有本质区别 正则表达式用来找:【文件】内容,文本,字符串。一般只有三剑客支持 通配符用来找:文件名,普通命令都支持 第4章 正则表达式使用注意事项 linux正则表达式以行为单位处理字符串 便于区别过滤出来的字符串,一定配合grep/egrep命令学习。 注意字符集,exportLC_All=C:无论何时,做何事都要注意字符集 第5章

Linux三剑客

匆匆过客 提交于 2020-02-07 02:46:48
一、Linux三剑客-Sed 1、Sed是什么 Sed:字符流编辑器,Stream Editor 2、Sed功能与版本 处理日志文件,日志,配置文件等 增加、删除、修改、查询 sed --version 可以通过man sed 来检验系统中有没有安装sed [root@luffy-001 ~]# sed --version GNU sed version 4.2.1 Copyright (C) 2009 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law. GNU sed home page: <http://www.gnu.org/software/sed/>. General help using GNU software: <http://www.gnu.org/gethelp/>. E-mail bug reports to: <bug-gnu-utils@gnu.org>. Be sure to

正则表达式(grep,sed)

只愿长相守 提交于 2020-02-07 02:11:12
正则表达式 元字符 .* 任意长度的任意字符 尽可能多匹配 [] 匹配指定范围内的任意单个字符,示例:[wang] [0-9] [a-z] [a-zA-Z] [^] 匹配指定范围外的任意单个字符,示例:[^wang] [:blank:] 空白字符(空格和制表符) [:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广) [:print:] 可打印字符,标点符号 + 匹配其前面的字符至少1次 {n} 匹配前面的字符n次 {m,n} 匹配前面的字符至少m次,至多n次 位置锚定: ^ 行首锚定 $ 行尾锚定 < 词首锚定 > 词尾锚定 ^$ 空行 分组: ( ) 多个字符捆绑在一起 \1引用 后向引用:引用前面匹配到的字符本身 或者: | 扩展正则表达式: 不加\ grep grep行过滤器 格式:grep ^root /etc/passwd 选项: -v 排除,取反 -i 忽略大小写 -o 匹配字符本身 -E 扩展正则表达式 -A -B -C 匹配后5行,前5行,前后5行 例题 显示/proc/meminfo文件中以大小s开头的行(要求:使用两种方法) cat /proc/meminfo | grep '^S\|^s' cat /proc/meminfo | grep -i '^S' 显示/etc/passwd文件中不以/bin/bash结尾的行 cat /etc

正则表达式学习笔记

笑着哭i 提交于 2020-02-06 23:55:38
1. 引言 以前我们用 grep 在一个文件中找出包含某些字符串的行,比如在头文件中找出一个宏定义。其实 grep 还可以找出 符合某个模式(Pattern) 的一类字符串。例如找出所有符合 xxxxx@xxxx.xxx 模式的字符串(也就是email地址),要求x字符可以是字母、数字、下划线、小数点或减号,email地址的每一部分可以有一个或多个x字符,例如 abc.d@ef.com 、 1_2@987-6.54 ,当然符合这个模式的不全是合法的email地址,但至少可以做一次初步筛选,筛掉 a.b 、 c@d 等肯定不是email地址的字符串。再比如,找出所有符合 yyy.yyy.yyy.yyy 模式的字符串(也就是IP地址),要求y是0-9的数字,IP地址的每一部分可以有1-3个y字符。 如果要用 grep 查找一个模式,如何表示这个模式,这一类字符串,而不是一个特定的字符串呢?从这两个简单的例子可以看出,要表示一个模式至少应该包含以下信息: 字符类(Character Class) :如上例的x和y,它们在模式中表示一个字符,但是取值范围是一类字符中的任意一个。 数量限定符(Quantifier) : 邮件地址的每一部分可以有 一个或多个x字符,IP地址的每一部分可以有 1-3个y字符 各种字符类以及普通字符之间的位置关系:例如邮件地址分三部分,用普通字符 @ 和 . 隔开

centos7.6用sed获取ip

心不动则不痛 提交于 2020-02-06 18:10:29
命令: ifconfig ens32 | sed -n '/inet /p' | sed 's/inet \([0-9.]\+\) .*$/\1/' ifconfig ens32:查看网卡信息 sed -n ‘/inet /p’:打印含有inet的一行 sed ‘s/inet ([0-9.]+).*$/\1/’ s 为sed替换指定字符命令。格式为sed ‘s/匹配字符/替换字符/’ () 获取里面文本内容,使用一个()后面则须有\1代表第一个(),如多个(),则拥有\1\2\3… 来源: CSDN 作者: WH-scdn 链接: https://blog.csdn.net/qq_42750240/article/details/104196529

a sed feature of delimiter

安稳与你 提交于 2020-02-06 17:33:36
问题 在一次使用sed结合shell参数对文本进行替换时,会报 bad flag in substitute command 之类错误。我只是简单的把一个文本中的目标字符串替换成bash脚本里定义的变量,写出来大概是这样一句: 1 sed "s/path/${local_path}/g" tmp.log 其中,后来用别的方法尝试了几次,发现是因为在变量 ${local_path} 中包含了’/‘。 原因 在sed的info里可以查到关于’s’命令中分隔符的描述: 123456 The syntax of the `s' (as in substitute) command is`s/REGEXP/REPLACEMENT/FLAGS'. T 大专栏 a sed feature of delimiterhe `/' characters may be uniformlyreplaced by any other single character within any given `s' command.The `/' character (or whatever other character is used in its stead)can appear in the REGEXP or REPLACEMENT only if it is preceded by a `