• LINUX命令-sed


    本文编辑小绝技-sed

    sed命令是用于对文本文件做内容操作的神器,常见的增删改都可以,查没必要用它,用grep或者gvim打开用vim的搜索匹配就行。

    sed 命令的基本格式如下:

    sed -hnVi 'action'

    或者

    sed -e expression

    参数说明:

    参数 含义及用法
    -h help
    -V version,版本信息
    -i sed命令默认是将做的修改输出到终端中,并不对原始文件做修改,而-i参数后边的‘action’将直接对原始文件做修改,所以这招慎用。
    -n sed命令默认会将修改后文件的全部内容输出,-n则仅显示处理后的结果
    -e 前边几个action要放在‘’里,而加-e则不需要了,直接写你的expression

    动作说明:

    动作 作用及用法
    a 新增,会将a后的字符串在目的对象或者目的行的下一行增加,用法: 目的对象/目的行a\newline 目的file。注意a后边要跟反斜杠
    c 替换,可以将目的对象或者目的行替换为c后边的字符串。用法:目的行/目的对象c\替换字符串 目的file
    d 删除,将目的行目的对象删除。用法:目的对象/目的行d 目的file。d后边不跟任何东西。
    i 插入,在目的对象/目的行上一行插入字符串,用法基本同a。
    p 打印,将目的对象目的行打印出来,同样p后不跟任何东西,常和-n参数一起用。
    s 替换,最最常用的,将目的范围行内的oldlstr替换为newstr。

    目的行,目的范围说明:

    n 第n行
    n1,n2 n1到n2行
    ^ 行首,多用在替换时正则匹配中
    $ 尾行;如果用在s的正则匹配中,代表行尾
    1 首行

    目的对象说明:

    目的对象及你想操作的目的字符串,可以用正则匹配,用两个斜杠左右包围:

    /目的对象或者目的字符串,可用正则匹配/

    下面是举了若干例子来练习,注意因为下面的练习都没加-i参数,所以都不是对原始文本直接做的修改,而是全部都输出到terminal上,同学们在应用时如果需要下面的操作都直接对原始文本做修改,sed后跟上 -i 参数就可以啦。

    测试文件内容如图:

    1.在第二行到第四行每行下边增加一行字符串“input [:]”

    用-e的话就不用加‘’了

    2.在首行前插入一行字符串“the lord ring”

    3.删除整个文本中中间有空格的行,以及删除第三行到第五行之间的空格(就这个测试文件来说,其实就相当于删除全文的空格啦)

    删除有空格的行:

    删除第三行到第五行之间的空格,其实就是用s替换,将空格替换掉:

    4.打印第6行,分别使用-n和不-n查看他们的差别

    不-n

    用-n

    5.将3到4行替换为“new new”

    6.查找并打印含有”wo“的行,并比较-n 和不 -n的差别

    不-n

    用-n

    7.分别使用c动作和s动作,查找“wo”字符串并替换为“input [:]”

    用c替换,由图可知,用c替换时将整个一行都替换掉了。

    用s替换,由图可知s替换是只替换匹配到的字符。

    8.$的使用,删除尾行;将ing结尾的替换为ed结尾

    删除尾行

    ing结尾替换为ed结尾


    通过这些练习相信sed的常见用法你已经基本掌握了,不管是写shell脚本还是在terminal中提升自己的处理速度都很有用。

  • 相关阅读:
    2022牛客多校#6 C. Forest
    105-120-Hadoop-MapReduce-outputformat:
    纯c#运行开源本地大模型Mixtral-8x7B
    使用docker部署nginx
    创意电子学-小知识:晶体管
    xampp安装包含的组件有(php,perl,apche,mysql)
    回归和拟合有什么不同-(非)参数检验-假设检验
    神器 CodeWhisperer
    英雄算法联盟 - 新九日集训人员招募规则
    TensorFlow入门(十九、softmax算法处理分类问题)
  • 原文地址:https://www.cnblogs.com/xiaoguoic/p/18274360