LinuxEye - Linux系统教程

LinuxEye - Linux系统教程

当前位置: 主页 > Linux命令 >

Linux sed命令参数及使用方法详解

时间:2012-03-28 12:10来源:www.linuxeye.com 编辑:LinuxEye 点击:
sed(stream editor) 功能说明: 利用script来处理文本文件。 语 法: sed[-hnV][-escript][-fscript文件][文本文件] 补充说明: sed可依照script的指令,来处理、编辑文本文件。 参 数: -escript或--exp
sed(stream editor)
功能说明:利用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

------分隔线----------------------------
标签:sed
栏目列表
推荐内容