3.2.7 基本用法

    你可能会常在管道(pipeline)中间使用 sed,以执行替换操作。做法是使用 s 命令--要求正则表达式寻找,用替代文本替换匹配的文本,以及可选用的标志:
 
    sed 's/:.*//'  /etc/passwd/  | sort -u     删除第一个冒号之后的所有东西,排序列表并删除重复部分
 
    
                                             sed
语法
    sed [ -n ]  'editing command'  [ file ... ]                        单个命令
    sed [ -n ]  -e  'editing command'  ...  [ file ... ]              多个命令     
    sed [ -n ]  -f  script-file  ...  [ file ... ]                              从脚本中读取命令
 
用途
    为了编辑它的输入流,将结果生成到标准输出,而非以交互式编辑器的方式来编辑文件。虽然 sed 的命令很多,能做很复杂的工作,但它最常用的还是处理输入流的文本替换,通常是作为管道的一部分。
 
主要选项
    -e 'editing command'
        将 editing command 使用在输入数据上。当有多个命令需应用时,就必须使用 -e 了。
 
    -f script-file
        自 script-file中读取编辑命令。当有多个命令需要执行时,此选项相当有用。
 
    -n 
        不是每个最后已修改结果行都正常打印,而是显示以p指定(处理过的)的行。
 
行为模式
    读取每个输入文件的每一行,假如没有文件的话,则是标准输入。以每一行来说,sed 会执行每一个应用到输入行的 editing command。结果会写到标准输出(默认状态下,或是显示地使用p命令及-n选项)。若无 -e 或 -f 选线,则 sed 会把第一个参数看作是要使用的 editing command。
 
    在这里,/字符扮演定界符(delimiter)的角色,从而分隔正则表达式与替代文本。在本例中,替代文本是空的,实际上会有效地删除匹配的文本。虽然/是最常用的定界符,但任何可显示的字符都能作为定界符。在处理文件名称时,通常都会以标点符号字符作为定界符(例如分号、冒号或逗点):
    
    find /home/tolstoy  -type d -print         寻找所有目录
    sed 's;/home/tolstoy/;/home/lt/;'           修改名称;注意:这里使用分号作为定界符
    sed 's/^/mkdir /'                                     插入mkdir命令
    sh -x                                                        以Shell跟踪模式执行
 
    上述脚本是将  /home/tolstoy  目录结构建立一份副本在  /home/lt  下。这个脚本使用了产生命令的手法,使命令内容称为Shell的输入。这是一个功能很强且常见的技巧,但却很少人这么用。

猜你喜欢

转载自www.cnblogs.com/avention/p/10307148.html