当前位置:   article > 正文

Linux三剑客sed之增删改查_sed 查找

sed 查找

一、sed查找

格式功能
‘1p’ ‘2p’指定行号查找
‘1,5p’指定行号范围查找
/[xyz]/p找出包含字符xyz中任何一个的行,两个斜线中间支持正则
/10/,/20/p查找从10开始到20结束

指定行号查找

sed -n '3p' oldboy.txt
sed '3p' oldboy.txt
sed '$p' oldboy.txt        # $表示最后一行
  • 1
  • 2
  • 3

在这里插入图片描述

指定行号范围查找

sed -n '1,3p' oldboy.txt
sed -n '4,$p' oldboy.txt    # $表示最后一行
  • 1
  • 2

在这里插入图片描述

过滤

sed -n '/[45]/p' oldboy.txt         # 找出包含字符4、5中任何一个的行
sed -n '/[0-9]/p' oldboy.txt        # 查找包含0-9的行
  • 1
  • 2

在这里插入图片描述

sed -nr '/[0-9]+/p' oldboy.txt        # 查找包含0-9字符任意组合的行
  • 1

sed默认不支持扩展正则,-r参数支持扩展正则

在这里插入图片描述

实际生产环境中,如果文件太大,我们一般不用vim/cat等命令查看,一般使用more/less/head/tail/grep/sed/awk等查看

查找11:02:13的日志

sed -n '/11:02:13/p' access.log 
  • 1

查找从11:02:13开始,到11:02:14结束的日志

sed -n '/11:02:13/,/11:02:14/p' access.log    
  • 1

在这里插入图片描述

查找从11:02:13开始,到11:02:140结束的日志,由于文件中没有11:02:140,故不会停止,直到文件末尾

sed -n '/11:02:13/,/11:02:140/p' access.log    
  • 1

在这里插入图片描述

二、sed删除

格式功能
‘1d’ ‘2d’指定行号删除
‘1,5d’指定行号范围删除
/[xyz]/d删除包含字符xyz中任何一个的行,两个斜线中间支持正则
/10/,/20/d删除从10开始到20结束

按行删除和指定范围删除

sed '3d' oldboy.txt
sed '2,3d' oldboy.txt
  • 1
  • 2

在这里插入图片描述

删除指定内容

sed '/lidao/d' oldboy.txt
  • 1

在这里插入图片描述

使用d和p两种方式,删除注释行以及空行

#!/usr/bin/python
# -*- coding: UTF-8 -*-

def fact(j):
    sum = 0
    if j == 0:
        sum = 1
    else:
        sum = j * fact(j - 1)  # 乘法
    return sum

  # 打印
print (fact(5))   # 打印
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
sed -r '/^$|^\s*#/d' 1.py           # 删除空行和注释行
sed -nr '/^$|^\s*#/!p' 1.py         # 空行和注释行不打印,!p表示不打印
  • 1
  • 2

在这里插入图片描述

三、sed增加

格式功能
creplace,替代这行内容
aappend,向指定的行或每一行后面追加内容
iinsert,向指定的行或每一行前面插入内容

实际上记一个a就可以

在指定行添加指定内容或进行替换

sed '3a 996,lidao996,UFO' oldboy.txt      # 第3行后追加996,lidao996,UFO
sed '3i 996,lidao996,UFO' oldboy.txt      # 第3行前插入996,lidao996,UFO
sed '3c 996,lidao996,UFO' oldboy.txt      # 第3行替换为996,lidao996,UFO
  • 1
  • 2
  • 3

在这里插入图片描述

向ssh_config最后一行追加以下配置:

UseDNS no
GSSAPIAUTCATION no
PermitRootLogin no
  • 1
  • 2
  • 3
sed '$a UseDNS no\nGSSAPIAUTCATION no\nPermitRootLogin no' ssh_config
  • 1

四、sed替换

格式功能
s#111#222#g全局将111替换为222
s@111@222@g全局将111替换为222
s/111/222/g全局将111替换为222
sed 's#[0-9]##g' oldboy.txt
  • 1

在这里插入图片描述

#!/usr/bin/python
# -*- coding: UTF-8 -*-

def fact(j):
    sum = 0
    if j == 0:
        sum = 1
    else:
        sum = j * fact(j - 1)  # 乘法
    return sum

  # 打印
print (fact(5))   # 打印
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

删除注释部分,只留下代码

sed -r 's@^$|^\s*#.*$|#.*$@@g' 1.py | egrep -v '^$'
  • 1

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/628003
推荐阅读
相关标签
  

闽ICP备14008679号