首页 > 代码库 > sed---个人总结

sed---个人总结

linux之sed用法
sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法
sed命令行格式为:
         sed [-nefri] ‘command’ 输入文本

常用选项:
        -n∶使用安静(silent)模式。在一般 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 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!


sed 流编辑器,行编辑器,一次只操作一行,默认不会修改原文件
   	---sed 一次从文件从读取一行,读取到模式空间,根据指定条件(定界符)范围内的行放到模式空间,然后根据模式进行匹配,
   			如果能够匹配的到就进行处理,否则不进行处理!sed 默认会把模式空间中未被处理的行显示出来!
sed {options} ‘script‘ input_file
sed -f "script_file" input_file
‘address command {para}‘  地址,命令,可选参数 -->sed ‘1,3d‘ /etc/fstab
1:不指定地址则表示所有行
2: 地址定界
	1,7
	1,+6
	3  第三行
	/patterm/  能够被模式匹配到的行就进行处理,默认是基本正则表达式


基本正则表达式
	匹配字符:
		.  匹配单个字符
		[]  指定的单个字符
		[^]  非指定范围的单个字符
	次数匹配:
		* 匹配其前的字符任意次
		? 匹配其前字符0或1次
		\{m,n\}  m到n次
	锚定符:
		\<,\b 词首
		\>,\b  词尾锚定
		^  行首锚定
		$  行尾锚定
	 	^$ 空白行
	 	.* 任意字符
	分组:
		\(\)
		\1 ,\2
扩展的正则表达式:
	匹配字符:
		.  匹配单个字符
		[]  指定的单个字符
		[^]  非指定范围的单个字符
	次数匹配:
		* 匹配其前的字符任意次
		? 匹配其前字符0或1次
		{m,n}  m到n次
	锚定符:
		\<,\b 词首
		\>,\b  词尾锚定
		^  行首锚定
		$  行尾锚定
	 	^$ 空白行
	 	.* 任意字符
	 多出的元字符:
	 	次数:+(其前的字符至少一次)
	 	或者:  |


COMMAND:
	d: 删除  sed ‘/^\//d‘ /etc/fstab  删除/开头的行
	a:\ 增加  sed ‘/^\//a \# this is a / line‘ /etc/fstab 在/开头的行追加写入# this is a / line
	i: \ 插入 和a相反,插入的是当前行的前一行
	p: 打印
	r: 读取文件写入sed ‘/CentOS/r /root/work/pass‘ /etc/issue将pass写入CentOS这行之下
	s/pattern/string/
		g:全局修改
		i:不区分大小写
	=:显示行号  sed ‘/^[a-z]/=‘ /etc/issue
OPTIONS:
	-n:--quiet  安静模式,只显示匹配的行
	-r:  扩展正则表达式
	-i: 直接修改文件
	-e: -e ‘script1‘ -e ‘script2‘
		sed -e ‘s/^[[:space:]]\{1,\}\([^[:space:]]\{1,\}\)/\1/‘ -e ‘s/\<default/DEFAULT/g‘ /boot/grub/grub.conf
	-f: 可以直接引入脚本文件---将COMMAND写入script文件中

man sed !!!!!!!!!!!!


sed---个人总结