功能说明:利用script来处理文本文件。 语 法:sed [-hnV][-e<script>][-f<script文件>][文本文件] 补充说明:sed可依照script的指令,来处理、编辑文本文件。 参 数: -e<script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。 -f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。 -h或--help 显示帮助。 -n或--quiet或--silent 仅显示script处理后的结果。 -V或--version 显示版本信息。 举 例: 它是文本处理中非常重要的工具。它能够完美地匹配正则表达式使用,功能很强大。 sed -i 's/pattern/replace_string/' file 替换给定文本中的字符串 sed 's/pattern/replace_string/g' file 替换每一行匹配的字符串 sed 's/pattern/replace_string/ng' file 从第n处匹配开始替换 字符/在sed中作为定界符使用。我们可以像下面一样使用任意的定界符: sed 's@pattern@replace_string@g' file sed 's|pattern|replace_string|g' file sed 's:pattern:replace_string:g' file 1. 移除空行 空白行可以用正则表达试^$进行匹配 sed '/^$/d' file 2. 已匹配字符串标记& &标记匹配样式的字符串,能够在替换字符串时使用已匹配的内容 [root@server1 ~]# echo this is an example | sed 's/\w\+/[&]/g' [this] [is] [an] [example] 正则表达式\W\+匹配每个单词,然后我们用[&]替换它。&对应于之前所匹配到的单词 3. 子串匹配标记\1 &代表匹配给定样式的字符串。但我们也可以匹配给定样式的其中一部分。 [root@server1 ~]# echo this is test 9999 | sed 's/test \([0-9]\)/\1/' this is 9999 这条命令将test 9999替换为9999.样式中匹配到的子串是9999。\(pattern\)用于匹配子串。模式被包括在使用斜线转移过过的()中。对于匹配到的第一个子串,对应的标记是\1,匹配到的第二个子串是\2,依次类推。 [root@server1 ~]# echo test 7777 | sed 's/\([a-z]\+\) \([0-9]\+\)/\2 \1/' 7777 test ([a-z]\+\)匹配第一个单词,([0-9]\+\)匹配第二个单词。\1和\2用来引用它们。这种引用被称为向后引用(back referencing)。 在替换部分,它们的次序被更改为\2 \1,因此结果呈现出逆序的形式。 4. 引用 sed表达式通常用单引号来引用。不过也可以使用双引号。双引号会通过对表达式求值来对其进行扩展。如下 sed -i "s/127.0.0.1.*$/127.0.0.1 `hostname` localhost.localdomain localhost/g" /etc/hosts sed [-nefr] [动作] 选项与参数: -n :使用安静(silent)模式。在一般sed的用法中,所有来自STDIN的数据一般都会被列出到屏幕上。但如果加上-n参数后,则只有经过sed特殊处理的那一行(或者动作)才会被列出来 -e :直接在指令列模式上进行sed 的动作编辑 -f :直接将 sed 的动作写在一个档案内,-f filename则可以执行filename内的sed 动作 -r :sed的动作支持的是延伸型正规表示法的用法(预设是基础正规表示语法) -i :直接修改读取的档案内容,而不是由屏幕输出 动作说明:[n1[,n2]]function n1, n2 :在 10 到 20 行之间进行操作 function 有底下这些东东: a :新增,a的后面可以接字符串,而这些字符串会在新的一行出现(目前的下一行) c :取代,c 的后面可以接字符串,这些字符串可以叏代 n1,n2之间的行! d :删除,因为是删除啊,所以 d 后面通常不接任何东东; i :插入,i 的后面可以接字符串,而这些字符串会在新的一行出现(目前的上一行); p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运作 s :取代,可以直接进行取代的工作,通常这个s的动作可以搭配正规表示法。例如 1,20s/old/new/g 转载请保留固定链接: https://linuxeye.com/command/sed.html |