温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

linux下sed命令的使用方法

发布时间:2021-07-28 18:15:39 来源:亿速云 阅读:174 作者:chen 栏目:大数据

这篇文章主要介绍“linux下sed命令的使用方法”,在日常操作中,相信很多人在linux下sed命令的使用方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linux下sed命令的使用方法”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

# 选项与参数:
# -n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
# -e :直接在命令列模式上进行 sed 的动作编辑;
# -f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作;
# -r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)
# -i :直接修改读取的文件内容,而不是输出到终端。
#  
# 动作说明: [n1[,n2]]function
# n1, n2 :选择操作的行数, 2, 5function代表2到5行, 2, +5function 代表第二行开始往后5行
# !function取反
#  
# function:
# a :新增行, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)
# c :取代行, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!, 格式: 
# d :删除行,d 后面通常不接字符串;格式: 
# i :插入行, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
# p :列印行,将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
# s :取代,可以直接进行取代的工作!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是, 末尾不加g只替换每一行的第一个匹配的字符串
# c和s 的区别, 与s的区别s是只替换匹配到的字符串, c是替换匹配到的字符串的行


#例子:
    #建一个测试文件
    echo -e "you are my love\nhello word\nfuck coding\nhttp://baidu.com" > test.txt


    # 不加选项, 操作后的结果打印到屏幕, 不会修改test.txt

        # function s
            # you替换成he
            sed 's/you/he/' test.txt
            # 1到2行的a替换成b
            sed '1,2s/a/b/' test.txt

        #function a, 在有hello行的下一行插入 k, a后面的\可以不要加上好看些
            # 匹配到hello的下一行添加一行k
            sed '/hello/a\k' test.txt
            # 1到2行每行后面添加一行k
            sed '1,2a\k' test.txt

        # function c, 替换有hello的的行为 k, c后面的\可以不要加上好看些
            # 匹配到的hello的行替换成k
            sed '/hello/c\k' test.txt
            # 1到2行替换成k
            sed '1,2c\k' test.txt

        # function i, 和a一样, 只不过这个是在匹配行的上一行插入

        # function p, !p取反, 与-n配合使用
            # 打印匹配到的行, 或取反
            sed -n '/hello/p' test.txt
            sed -n '/hello/!p' test.txt

            # 打印1到2行, 或取反
            sed -n '1,2!p' test.txt
            sed -n '1,2p' test.txt

        # function d
        # 删除匹配到的行, 或取反
            sed '/hello/d' test.txt
            sed '/hello/!d' test.txt

        # 删除1到2行, 或取反
            sed -n '1,2!p' test.txt
            sed -n '1,2p' test.txt


    # -i 选项, 这个用的比较多, 这个直接操作文件用法一样, 效果和 sed '/hello/d' test.txt > test.txt 一样.
    # 其他选项自己琢磨

到此,关于“linux下sed命令的使用方法”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI