标签:
本文记录的是自己在学习《Linux私房菜》中正则表达式的笔记。
关于行尾符$
如果文件本身没有内容,比如使用touch新建的文件,那么$将会没有意义。例如下面操作:
先使用touch新建了一个test.txt文件,然后尝试使用sed命令去在行尾增加内容,但是没有成功(紧接着的cat命令没有输出任何东西),然后我使用vim给test.txt手动增加了一行内容“add by vim”,然后再使用同样的sed命令就成功了,如后续cat命令输出结果。
命令sed
sed是一个十分有用的管道命令,功能很多,而且都是用的比较多的场景。
sed [-nefri] [动作]
下面是动作说明,动作需要使用单引号‘’,且可以用两个数字或者$来选择进行动作的行数,‘[n1[,n2]]function’,比如‘2,5d‘,‘2d‘,‘3,$d‘这三种形式,分别表示选择[2-5]行,第2行,[3-最后一行]。也可以使用正则表达式来选择行,比如‘/正则表达式/d‘,则将对符号正则表达式的行进行删除动作。function有如下操作:
关于对function的作用范围,测试表明:
使用a来增加多行:在每一行后面都必须使用反斜杠“\”来进行新行的增加,例如:test.txt中本来只有一行:this is a test file.,然后使用a增加了三行
使用sed删除空行:sed -i ‘/^$/d‘ filename,解释:-i表示直接修改文件而不在屏幕上显示,/^$/使用的是正则表达式,在正则表达式中^表示行首,$表示行尾,行尾与行首之间没有东西则是空行,d表示删除。
sed命令有一个查找替换功能:
sed ‘s/要被替换的字符串/新的字符串/g‘ filename
其中,要“被替换的字符串”是使用正则表达式的,而对于“新的字符串”那肯定就是普通的字符。下面是我做的一些测试。
标签:
原文地址:http://www.cnblogs.com/willhua/p/5905724.html