• 第三十一节 sed命令


    sed
    非交互性的文本流编辑器,它编辑文件或标准输入导出的文本拷贝,标准输入可能来自键盘,文件重定向,字符串,变量或者一个管道文本
    注意:sed并不与初始化文件打交道,它操作的是一个拷贝,然后所有的改动如果没有重定向到一个文件,将输出到屏幕

    sed命令的使用格式
    [root@centos7-2 ~]# sed [-nefr] [动作]
    # sed [option] scripts file1 file2 ...
    # sed [option] 'AddressCommand' file1 file2 ...
    Address:表示对哪些行进行处理
    Command:操作命令
    option选项:-nefr
    sed命令 option选项:-nefr

    -n :不再显示模式空间中的内容(默认显示)
    -i : 直接修改原文件
    -e : 同时执行多个匹配操作
    -f :FILE 将多个AddressCommand保存至文件中,每行一个AddressComma

    [root@centos7-2 ~]# sed -e '/^#/d' -e '/^$/d' /etc/fstab
    //找出 fstab文件, 开关是#(注释行)与空行。

    [root@centos7-2 ~]# cat /tmp/file.txt

    /^#/d

    /^$/d

    [root@centos7-2 ~]# sed -f /tmp/file.txt /etc/fstab

    //找出 fstab文件, 开关是#(注释行)与空行。

    -r:表示使用扩展正则表达式

    [root@centos7-2 ~]# sed -r 's|l(..e)|L1|' /tmp/1.txt

    --follow-symlinks 修改软链接文件时

    [root@centos7-2 ~]# sed --follow-symlinks -i 's|hello|hi|' /tmp/2.txt

    sed命令 Address表示方法:

    1、StartLine,EndLine

    1,100 \前100行

    1,$ \全文

    3,10 \3到10行

    2、LineNumber

    3 \第3行

    3、StartLine,+n

    5,+2 \从第五行开始起,后2行。 5行6行

    /root/,+2 \匹配root的那行与后一行。

    4、/正则表达式/

    /root/

    /bash$/

    5、 /正则表达式1/, /正则表达式2/

    第1次被Regex1匹配的行开始,到第1次被Regex2匹配的行中间的所有行

    sed命令 Command:

    d 删除符合条件的行

    # sed '1,2d' /etc/inittab

    删除文件中包含oot的行

    # sed '/oot/d' /etc/fstab

    删除第1行及其后2行

    # sed '1,+2d' /etc/fstab

    删除第1行

    # sed '1d' /etc/fstab

    删除以/开头的行

    # sed '/^//d' /etc/fstab

    p 显示符合条件的行

    显示以/开头的行

    # sed -n '/^//p' /etc/fstab

    a string 在符合条件的行后追加新行,string为追加的内容

    在以/开头的行后面追加# hello world

    # sed '/^//a # hello world' /etc/fstab

    在以/开头的行后面追加两行内容,分别为# hello worl # hello linux

    # sed '/^//a # hello world # hello linux' /etc/fstab

    i string 在符合条件的行前添加新行,string为追加的内容

    在文件第1行添加# hello world

    # sed '1i # hello world' /etc/fstab

    c string 替换指定行的内容

    将文件中最后一行内容替换为End Of File

    # sed '$c End Of File' /1.txt

    # sed '7c SELINUX=disabled' /etc/sysconfig/selinux

    = 用于显示每一行的行号

    显示/etc/passwd文件最后一行的行号

    # sed -n '$=' /etc/passwd

    49

    r file_name 将指定文件的内容添加到符合条件的行的后面

    在文件的第2行后追加/etc/issue文件的内容

    # sed '2r /etc/issue' /etc/fstab

    w file_name 将符合条件的内容另存到指定文件中

    将以UUID开头的行另存为到/1.txt中

    # sed '/^UUID/w /1.txt' /etc/fstab

    s/regex/string/[修饰符] 查找并替换 默认,只替换每一行第1次出现的字符

    修饰符:g:替换每一行所有的字符

    i:忽略大小写

    简单案例
    cuttest.sh
    name age height
    wang 18 68
    li 33 78
    he 22 67
    zhao 27 58

    sed -n '2,3p' cuttest.sh
    返回:第二三行
    wang 18 68
    li 33 78

    df -h | sed -n '2p'>sedtest.txt 将磁盘使用情况的第二行重定向到settest.txt

    原文链接 https://blog.51cto.com/14154700/2401082
    原文链接 https://blog.csdn.net/shudaqi2010/article/details/76613421

    如侵权请联删

  • 相关阅读:
    计算机网络 学习笔记-传输层:TCP协议简介
    C/C++里的const(2)
    C语言变量声明加冒号的用法
    CTL_CODE说明
    FreeImage.lib库的配置和简单使用 转
    WSASocket()与Socket()的区别 转
    Win7下运行VC程序UAC权限问题 VC2010设置UAC权限方法
    MFC通过URL下载并保存文件代码 转载
    opencv 数据类型转换:CvArr, Mat, CvMat, IplImage, BYTE 转
    ISIS Scanner Errors codes
  • 原文地址:https://www.cnblogs.com/kogmaw/p/12410361.html
Copyright © 2020-2023  润新知