标签:linux 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 !!!!!!!!!!!!
标签:linux sed
原文地址:http://liuguan.blog.51cto.com/9136714/1570886