• 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的输入。这是一个功能很强且常见的技巧,但却很少人这么用。
  • 相关阅读:
    shell 如何避免误删目录
    Linux 禁止用户或 IP通过 SSH 登录
    gitlab不能启动了
    清空分区表里某个分区的数据
    mysql错误Table ‘./mysql/proc’ is marked as crashed and should be repaired
    MySQL Server参数优化
    linux下删除乱码文件、目录
    ERROR 1044 (42000): Access denied for user 'root'@'localhost'
    awk 打印从某一列到最后一列的内容
    连接和关闭资源工具类
  • 原文地址:https://www.cnblogs.com/avention/p/10307148.html
Copyright © 2020-2023  润新知