• Linux之sed命令


    1.sed命令的原理过程

    按照文件每行信息进行处理,找出符合条件的信息,执行相应操作;

    • 找什么信息,做什么事情;
    • 一行一行的进行查找操作
    • 找到要处理的信息进行处理操作
    • 操作时会有默认输出,-n 参数可以取消默认输出;

     

    2.sed命令参数详解

    -n      #取消默认显示
    -i    # 修改文件
    -i.bak  # 先备份,再修改   #-i和-n不能同时使用
    -r      #表示扩展正则匹配
    -e    #多个操作接在一起操作
    s #替换 p #打印输出 a #在匹配行后一行增加内容 i #在匹配行前一行增加内容
    c   #替换匹配的这一行
    d   #删除
    g   #表示全局global
    &   #调用前面的正则匹配
    =   #打印文件行号
    N   #将当前读入行的下一行读取到当前的模式空间,即同时执行两行; 

     

    3.sed命令练习操作

    (1)替换dks.txt文本中old为new
    sed -i 's#old#new#g' dks.txt
    (2)打印dks.txt文本第一行至第三行
    sed -n '1,3p' dks.txt
     
    (3)打印dks.txt文本中第一行与最后一行
    sed -n '1p;$p' dks.txt
     
    (4)删除 dks.txt 第一行至第三行
    sed '1,3d' dks.txt
    (5)删除‘匹配到的行’至最后一行
    sed '/匹配内容/,$d' dks.txt
    (6)删除 dks.txt 最后 6 行及删除最后一行
    for i in `seq 1 6`;do echo $i; sed -i '$d' dks.txt ;echo "-----" ; done
    (7)在 dks.txt 文件中查找 dks 所在行,并将其上一行添加 word 字符
    sed -i '#dks#iword' dks.txt
    (8)在 dks.txt 文件中查找 dks 所在行,并在其下一行添加 word 字符
    sed -i '#dks#aword' dks.txt
    (9)在 dks.txt 文件中,查找以 test 结尾的行,并在行尾添加字符串 word
    sed 's#test$#&word#g' dks.tx
    (10)在 dks.txt 文件中,查找 test 所在的行,并在其行首添加字符串 word
    sed '#test#s#^#&word#g' dks.txt
    (11)多个 sed 命令组合,使用-e 参数
    sed -i -e '/www/s/^/&1./' -e 's/www$/&./g' dks.txt
    (12)多个 sed 命令组合,使用分号“;”分割
    sed -i -e '/test/s/^/&1/ ; s/test$/&./g' dks.txt
    (13)sed 读取系统变量,变量替换
    Test=123
    sed "s/test/$Test/g" dks.txt
    (14)修改 selinux 策略 enforcing 为 disabled,查找/SELINUX/行,然后将其 enforcing值改成 disabled ; !s 表示不替换前面的匹配行
    sed -i '/SELINUX/s/enforcing/disabled/g' /etc/selinux/config
    sed -i '/SELINUX/!s/enforcing/disabled/g' /etc/selinux/config
    (15)合并上下两行,即两行合并;参数 N 可以同时处理两行;
    sed -n 'N;s/
    / /p' dks.txt
    (16)使用 sed 命令先备份后修改
    sed -i.bak '3,5d' test.txt
    (17)在第 2 行之前,在第 3 行之后插入
    sed -i -e '2i123' -e '3a123' test.txt
    (18)通过后项引用取 IP 地址
    ifconfig eth0|sed -nr '2s#^.*inet (.*) .*netmask.*$#1#gp'

    19)合并所有行

    cat num.txt|sed ':a;N;s/
    / /;ba;' 
  • 相关阅读:
    fork()和僵尸进程
    布尔变量面试题
    vue学习之二
    vue学习之一
    圈复杂度
    phpExcel与jq的ajax
    Object.defineProperty与修改某个数组实现监听效果
    mpn不得不说的坑
    论javascript编写优美
    微信小程序之学习
  • 原文地址:https://www.cnblogs.com/IMSCZ/p/11798620.html
Copyright © 2020-2023  润新知