码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • linux sed操作汇总


    经常使用,但有些总记不全,有时候经常查找,这次全部捋清楚做备忘,有需要的小伙伴欢迎收藏起来哦!

    查、增、改、删一应俱全,非常详细!

    目录

    一、查看

    查看第2行

    查看第2行到第3行

    查看第1行、第3行

    查看从第2行开始到文件结束的内容

    查看文件中包含指定字符的行

    查看文件中包含指定字符的行数

    二、文本内容替换

    1,替换每行第一个出现的指定内容

    2,全局替换

    3,全局替换:按每行

    4,全局替换:按指定行数

    情景1:替换的范围是相连的几行或1行

    情景2:替换的范围是不相连的几行

    5,关于定界符

    6,替换包含斜杠、反斜杠的内容

    方案1

    方案2

    特殊情况:如果要替换的既包含/又包含\

    特殊情况:斜杠替换为反斜杠

    7,替换包含引号、单引号的内容

    双引号替换为x

    单引号替换为x

    单引号替换为双引号

    8,替换仅为了打印查看效果,不修改原文件时

    9,一次替换多个原内容

    10,替换整行内容

    情景1:整体替换、行数可能变化

    情景2:整体替换指定行、行数不变

    方法1

    方法2

    情景3:操作行替换的是不相连的几行

    11,替换的内容中包含中括号[]的

    三,追加&插入

     换行插入:给第1、2、3行的每行后都新增一行插入内容x

    换行插入:给所有行后都新增一行插入内容x

    不换行追加:给第1行后追加内容x

    不换行追加:给第2行前插入内容x

    不换行追加:给文件每行末尾都追加x(sed)

    不换行追加:给文件每行末尾都追加x(awk)

    四,删除操作

    删除空白行

    删除指定行

    五,同一sed操作多个条件(不同模式)

    六,用另一个文件的内容替换该文件指定内容

    七,删除文件中每行前的第一个空格

    八,删除文件a中每行前的所有空格和所有-符号


    一、查看

    注意,下面每条指令中最后的a是文件名。

    查看第2行

    sed -n '2p' a

    查看第2行到第3行

    sed -n '2,3p' a

    查看第1行、第3行

    sed -n -e "1p" -e "3p" a

    查看从第2行开始到文件结束的内容

    sed -n '2,$p' a

    上面指令中引号也可以去掉。

    查看文件中包含指定字符的行

    如下,查看文件中包含hello的行:

    sed -n '/hello/p' a

    或使用awk完成:

    awk '/hello/' a

    查看文件中包含指定字符的行数

    如下,查看文件中包含hello的行的行数:

    sed -n '/hello/p' a |wc -l

    也可以grep实现:

    grep -c "hello" a

    二、文本内容替换

    1,替换每行第一个出现的指定内容

    如仅替换每行第一个出现的123

    sed 's/123/abc/' a

    2,全局替换

    全局替换每行的指定内容为新内容:

    sed 's/123/abc/g' a

    3,全局替换:按每行

    如按每行从第2个出现时开始进行替换:

    sed 's/123/abc/2g' a

    4,全局替换:按指定行数

    情景1:替换的范围是相连的几行或1行

    如下,即替换第3行~第5行内容中的123为abc

    sed '3,5s/123/abc/g' a

    当然,如果只想替换第3行~第5行中每行第一个123,则去掉g就可以了。

    情景2:替换的范围是不相连的几行

    如第1行、第3行:

    sed -e '3s/123/x/g' -e '11s/123/x/g' a

    或

    sed -e '3s/123/x/g;11s/123/x/g' a

    5,关于定界符

    上述案例中/是定界符,该符号可自行设置,如我想换成用#定界:

    sed 's#123#abc#2g' a

    6,替换包含斜杠、反斜杠的内容

    方案1

    换定界符可实现,如下将/替换为x:

    sed 's#/#x#g' a

    如果不换定界符,就是要用\来替换含有\等符号的字符串,怎么办?

    如将文件中斜杠、反斜杠替换为x,结果都一样:

    1. sed 's/\/x/g' a
    2. sed: -e expression #1, char 7: unterminated `s' command
    3. sed 's///x/g' a
    4. sed: -e expression #1, char 5: unknown option to `s'

    如此会报错。那怎么解决?看方案2.

    方案2

    对于要替换的内容有斜杠的,用反斜杠转义即可成功:

    sed 's/\//x/g' a

    如果反斜杠要替换,则也用反斜杠转义:

    sed 's/\\/x/g' a

    特殊情况:如果要替换的既包含/又包含\

    如下,将文件中的所有斜杠、反斜杠均替换为x:

    sed 's/\//x/g;s/\\/x/g' a

    特殊情况:斜杠替换为反斜杠

    sed -i 's/\//\\/g' a

    即都用反斜杠转义即可。


    7,替换包含引号、单引号的内容

    双引号替换为x

    如下,将双引号替换为x,其中双引号要用反斜杠\转义:

    sed -i 's#\"#x#g' a

    单引号替换为x

    如下,将单引号替换为x,其中外围的一对单引号需换为双引号,和里面不要交叉即可:

    sed -i "s#'#x#g" a

    单引号替换为双引号

    但是,如果是引号换为另一种引号呢?如将单引号替换为双引号:

    sed -i "s#'#\"#g" a

    即,双引号用\转义即可成功。

    8,替换仅为了打印查看效果,不修改原文件时

    sed -e 

    9,一次替换多个原内容

    解决办法:用分号;隔开

    举例如替换文件中123为x,替换456为y:

    sed 's/123/x/g;s/456/y/g' a

    10,替换整行内容

    字符c用来操作指定行,如1c指的是第一行,1,3c就是第1行~第3行

    情景1:整体替换、行数可能变化

    将第1行完整替换为x

    sed -i '1c x' a

    将第1、2行的所有内容完整替换为x

    sed -i '1,2c x' a

    此时效果是原来的第1、2行消失,被替换为了x,相当于文件整体少了一行。
    (注意并不是把第1、2行每行都各自替换为x哦)

    情景2:整体替换指定行、行数不变

    将第1、2行的每行内容都替换为x

    方法1

    sed -i '1c x' a |  sed -i '2c x' a

    即用管道符连接多个行操作。

    方法2

    不使用c,使用正则+替换的办法来实现:

    sed -i '1,2s/.*/x/g' a

    情景3:操作行替换的是不相连的几行

    如果是不相连的两行,如第1行、第3行:

    sed -i -e '1s/.*/x/g' -e '3s/.*/x/g' a

    或

    sed -i -e '1s/.*/x/g;3s/.*/x/g' a

    11,替换的内容中包含中括号[]的

    如原内容为[a] = 1,替换为a = 1

    sed -i "s#\[a\] = 1#a = 1#g" a

    三,追加&插入

    下面都是操作a文件。

     换行插入:给第1、2、3行的每行后都新增一行插入内容x

    sed '1,3ax' a

    如文件a内容是:

    1. hello
    2. hello.hello
    3. 12345123

    操作后变为6行:

    1. hello
    2. x
    3. hello.hello
    4. x
    5. 12345123
    6. x

    换行插入:给所有行后都新增一行插入内容x

    sed -i 'ax' a

    不换行追加:给第1行后追加内容x

    sed -i '1s/$/x/' a

    不换行追加:给第2行前插入内容x

    sed -i '2s/^/x/' a

    不换行追加:给文件每行末尾都追加x(sed)

    sed -i 's/$/x/' a

    不换行追加:给文件每行末尾都追加x(awk)

    awk '{print $0"x"}' a

    或

    awk '$0=$0"x"' a

    注意,此操作(awk)不会实际修改文件。


    四,删除操作

    注意:下述操作如果只想操作后打印出来而不是真正修改文件,则去掉 -i参数即可。

    主要是用d字符删除。

    删除空白行

    sed -i '/^$/d' a

    删除指定行

    如删除第1行

    sed -i '1d' a

    删除最后一行

    sed -i '$d' a

    删除第2行到第3行

    sed -i '2,3d' a

    删除第2行到尾行

    sed -i '2,$d' a

    删除所有以hello开头的行

    sed -i '/^hello/d'  

    删除所有包含hello的行

    sed -i '/hello/'d a

    五,同一sed操作多个条件(不同模式)

    -e选项允许在同一行里执行多条命令。

    举例如:将第1行替换为x、将文件中123替换为x,将456替换为y,且上述所有操作实际修改到文件

    sed -i -e '1c x' -e 's/123/x/g;s/456/y/g' a

    可以看到,不同的操作用-e指定,多个替换直接可以在一个-e内完成并可以用分号连接。

    六,用另一个文件的内容替换该文件指定内容

    -r来指定目标文件。如下,用b文件的内容替换a文件中的所有123

    sed -i '/123/r b' a

    七,删除文件中每行前的第一个空格

    sed 's/^ //g' a

    注意,此时仅删除每行开始的第一个空格,如果某行开头有多个空格只会删除第一个。

    如要要删除每行前所有空格:

    sed 's/^[ ]*//' a

    八,删除文件a中每行前的所有空格和所有-符号

    文件a内容如下:

    1. #cat a
    2.  aaa
    3.   bbb
    4. -ccc
    5.  ddd
    6.  - eee

    操作起来:

    sed -i 's/^[ -]*//' a

    再次查看:

    1. #cat ccc
    2. aaa
    3. bbb
    4. ccc
    5. ddd
    6. eee

  • 相关阅读:
    https证书配置(nginx)
    超分辨率技术
    linux部署禅道
    阿里P9整理出千页笔记:Java程序设计与数据结构基础+进阶
    【JY】求?减隔震元件的滞回面积~
    java程序终端排查
    python+pyautogui—PC端自动化(二)键盘鼠标及对话框操作
    阿里云服务器(Ubuntu)配置calibre-web图书管理服务
    阿里P8大牛带你深入理解SpringCloud微服务构建文档
    人工智能第2版学习——产生式系统2
  • 原文地址:https://blog.csdn.net/HYZX_9987/article/details/132696165
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号