linux sed 正则表达式(Linux基本操作10-----正则表达式与文件格式化处理)
本文目录
- Linux基本操作10-----正则表达式与文件格式化处理
- 关于Linux中正则表达式的小问题
- sed正则表达式意思是
- 请问Linux中这段命令什么意思“ sed ’/^$/d’”
- linux中sed ’s/^\t/apple\t/’ 是什么意思呢该如何理解它
- linux shell script 使用正则表达式替换查找文本
Linux基本操作10-----正则表达式与文件格式化处理
一正则表达式1简单的说正则表达式就是处理字符串的方法,它是以行为单位来进行字符串的处理行为,正则表达式通过一些特殊符号的辅助,可以让用户轻易的达到查找,删除,替换某特定字符串的处理程序2grep在数据中查找一个字符串时,是以整行为单位来进行数据的选取的,也就是说假如一个文件内有10行,那么其中两行是有用的,那么就将这两行显示出来,其它的丢弃3在bash当中,我们知道通配符*可以用来表示任意个字符,但是正则表达式中的*表示不同的含义在正则表达式中,’.’表示的是一定有一个任意字符的意思在正则表达式中,’*’表示的是重复前一个字符0到无穷多次的意思4基础的正则表达式RE字符意义^word查找行首为word的行word$查找结尾为word的行.代表一定有一个任意的字符*重复前一个字符0个到无穷多个从字符集合里面选择一个字符从要选择的范围里面选择一个字符从不是这个字符集合里面找出一个字符/{n,m/}连续n到m个的前一个字符,/{n/}则是连续n个前一个字符,/{n,/}则是联系n到无穷多个前一个字符二sed工具1sed本省是一个管道命令,可以分析标转输入,而且sed还可以将数据进行替换,删除,新增,选取特定行等功能2sed的用法sed-n使用安静模式,在一般模式中,所有来自stdin的数据一般都会被列出到屏幕上,但是如果加上-n这个参数的话,则只有经过sed特殊处理的那一行才会被列出-e直接在命令模式上进行sed的动作-f直接将sed的动作写在一个文件内,-ffilename则可以执行filename内的sed动作-rsed的动作支持的是扩展正则表达式的语法-i直接修改文件的内容,而不是由屏幕输出3动作说明n1,n2functionn1,n2不见得会存在,一般代表的是进行的动作的行数function有下面这些参数a:新增,a的后面可以接字符串,而这些字符串会在新的一行出现,目前的下一行c:替换,c的后面可以接字符串,这些字符串可以替换n1,n2之间的行d:删除,因为是删除,所以d后面通常不接任何参数i:插入,i的后面可以接字符串,而这些字符串会在新的一行,目前的上一行p:打印,也就是将某个选择的数据打印出来s:替换,可以直接进行替换的工作三文件的格式化以及相关处理1格式化打印printf’打印内容‘实际内容关于C程序语言内,常见的变量格式%ns那个n是数字,s代表的是string%nd那个n是数字,d代表的是整数%N.nf那个n与N都是数字,f代表浮点数2文件比较工具diffdiff就是用在比较两个文件之间的区别,并且是行为单位来比较的,一般是用在ASCLL纯文本文件的比较上diff的用法difffrom_fileto_file-b忽略一行当中仅有多个空白的区别-B忽略空白行的区别-i忽略大小写的不同3如果我们要将旧的文件升级成为新的文件时,我们可以先利用diff比较出文件的区别,并将区别文件制作成为补丁文件,再由补丁文件更新旧文件即可。一般来说我们使用diff制作出来的比较文件通常扩展名为.patch更新:patch-pN《patch_file还原:patch-R-pN《patch_file
关于Linux中正则表达式的小问题
echo abcd123 | sed ’s/\(*\).*/\U\1/’\(..\) 保存匹配的字符,如s/\(love\)able/\1rs,loveable被替换成lovers上例中\1就是指前面的\(*\)\U 是转换成大写这样就明白了,\U\1指 *全部转成大写。invalid reference \1 on `s’ command’s RHS“s”命令的RHS非法引用\1,RHS应该是指右边,LHS指左边。没注意过这个单词。呵呵。
sed正则表达式意思是
题主你好,
写在前面: 题主的sed中一共是4个表达式, 我先分别讲每个表达式的作用,最后再讲它们放在一起的效果.
你这总共4个正则表达式,从左到右:
第1个: /^#/d 作用是: 将以#号开头的行删掉
第2个: /^*$/d 作用是: 将只含有空格和或tab的行删掉, 这里用的是"和或"说明如果行只包含空格会被删掉, 如果行只包含tab也会被删掉, 如果行是由空格和tab一起组成的也会被删掉
第3个: s#^*## 作用是: 将开头的空格和或tab删掉,但该行后面的内容会保留
第4个: s#*$## 作用是: 将结尾的空格和或tab删掉,但该行后面的内容会保留
---------------
先说一下: sed是读一行处理一行, 而-e的作用是指定多个作用在被处理行上的命令, 并且后面的命令作用对象是头一个-e命令的处理结果.
举例来说, 假设我有一个文件名叫number,里面只有一行内容为1234,则
sed -e ’s#1#3#’ -e ’s#3#5#’的处理情况为:
先将第1个-e后面的命令,’s#1#3#’作用在内容1234上, 将1替换为3,得到的结果为: 3234.
再将第2个-e后面的命令,’s#3#5#’作用在第1个-e命令处理后的结果3234上,将3替换为5,得到的结果为5254.
-----
最后引出题主的那个sed命令: sed -e ’/^#/d’ -e ’/^*$##’
题主可以对照着上面我对这4个正则表达式的解释去理解我下面所说的:
先读取文件流的第一行, 看这行:
1.是否是以#开头的, 如果是则将这行直接删掉, 因为第1个正则就把行都删了,所以后面那三个命令也就不执行了,然后继续读取下一行, 然后从第1个正则开始处理.
2.如果读入的行不是以#开头的,则第1个正则就没用了, 再看第2个正则, 如果读取的这一行只包含空格和或tab,则将这行删掉, 即然在第2个正则这读入的行就被删了, 后面的两个正则也就不执行了,然后继续读取下一行, 然后从第1个正则开始处理.
3.如果读入的行不是以#开头的, 则第1个正则就没什么用了, 也不是只包含空格和或tab,则第2个正则也没用了, 如果行是有内容的,但是以空格和或tab开头,这时第3个正则就起作用了, 将开头所有的空格和或tab都删掉,只保留空格和或tab后面的内容, 第3个正则完事了, 再看第4个正则,第4个正则的作用对象是第3个正则处理后的结果,看看第3个正则处理的结果中末尾是否是以空格和或tab结尾的,如果是则将末尾的空格和或tab删掉,剩下的就是最后输出的内容, 说了这么多总结下来就是"掐头去尾".
4.如果读入的行,即不是以#开头, 也不是只包含空格和或tab,有内容,但不是以空格和或tab开头,但是以空格或是tab结尾的, 此时会将末尾的空格和或tab都删掉,保留剩下的内容,总尾下来就是: "去尾"
-----------
上面说了这么多, 给个例子, 通过执行后的结果和原始数据对比,自己理解一下吧:
写在最后: 写的比较啰嗦,不知道你有没有耐心看完.
希望对你有帮助, 欢迎追问.
请问Linux中这段命令什么意思“ sed ’/^$/d’”
1、正则表达式里 ^代表行首,$代表行首2、例如在vi里,Shift+^光标到行首,Shift+$,光标到行尾3、sed -i ’/^$/d’ a.txt会将没内容的空行删除4、grep ’^ABC’ a.txt搜索ABC开头的行
linux中sed ’s/^\t/apple\t/’ 是什么意思呢该如何理解它
您好很高兴回答您的问题:
\t表示 tab键或tab字符 一般是8个空格长度的"大"空格
\t含义
- ^是正则表达式表示 以....开头的部分 ^r 表示以r字母开头的行
^含义
sed的替换格式 s/// 或 s### 表示替换
s##替换
最后问题可以改为s### 形式,’s#^\t#apple\t#’ 表示把开头的tab字符替换为apple+tab字符
最后效果图
最后一个问题: 可以改为 sed ’1 s#^#a1\ta2#’ 1表示第1行, s###表替换,把开头的空字符,替换为a1tab键a2
请点击输入图片描述
理解了,点个赞吧,不理解继续问.
linux shell script 使用正则表达式替换查找文本
我也写个例子:#!/bin/shread -p "Pls input subnet: " $subnetread -p "Pls input netmask: " $netmasksed -i "s_subnet_subnet $subnet netmask $netmask{_" dhcpd.conf ----------------------------------------------------------------------------------------更新一下。read -p "Pls input subnet: " $subnetread -p "Pls input netmask: " $netmasksed -i “s/^\(.*subnet \).*\( netmask \).*\(.*\)$/\1$subnet\2$netmask\3/” dhcpd.conf sed中正则匹配时可以在不需要变化的文本两边插入带反斜杠的圆括号来定义区域,然后通过区域号\x(x从1开始)来引用这些由圆括号界定的区域。这样就可以实现只改变部分区域而另一部分保持不变。
更多文章:
html中type的属性值(HTML5中input元素新增加哪些type属性值它们有什么作用)
2024年7月3日 08:08
webserver接口(思科模拟器实验的Web Server接口怎麽打开)
2024年6月24日 03:57
模块结构图是什么阶段的结果?模块结构图产生的基础或依据是什么
2024年7月24日 23:20
struts2安装(struts2 下载出错!IE提示无法下载!)
2024年4月22日 13:10
老板问:企业培训最终为了什么,我答:解决问题,提高效益,老板摇头,你们认为是什么?企业培训公司是做什么的怎么发展呢
2024年7月15日 10:04
spring的正确读音(spring 春天 是发b的音还是p的音)
2024年7月13日 22:54
sql2000收缩数据库日志(SqServer2000数据库日志满了怎么办)
2024年9月8日 21:50
vs2010破解版下载(去哪下载VS2010和VC++ 10.0如题 谢谢了)
2024年6月14日 06:35