当前位置: 首页 > news >正文

[linux]sed命令基础入门详解

sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。

一.基本语法

sed [options] 'commands' files

  • options:可选的命令行选项。
  • commands:要执行的sed命令。
  • files:要处理的文件列表。
1.替换文本:替换第一个匹配项:
sed 's/old/new/' file.txt替换所有匹配项:
sed 's/old/new/g' file.txt2.打印行:打印文件中所有行:
sed -n 'p' file.txt3.删除行:删除包含特定文本的所有行:
sed '/pattern/d' file.txt4.插入文本:在第一行前插入文本:
sed 'i\new line' file.txt5.追加文本:在最后一行后追加文本:
sed 'a\new line' file.txt6.替换特定行:替换第3行:
sed '3s/old/new/' file.txt7.使用模式分隔符:使用其他字符作为分隔符:
sed 's#old#new#' file.txt8.使用正则表达式:使用扩展正则表达式(需要 -r 选项):
sed -r 's/regex/replacement/' file.txt9.原地编辑文件:直接修改文件内容:
sed -i 's/old/new/g' file.txt10.不区分大小写:进行不区分大小写的替换:
sed 's/old/new/I' file.txt11.多行模式:处理多行匹配:
sed ':a;N;$!ba;s/old/new/g' file.txt12.使用循环:对于每找到一个匹配项,执行特定命令:
sed -n '/foo/{ :a p; n; ba; }' file.txt

二.实操案例

首先需要建立一个文档。

1.替换文本

 cat test.txt    #与之后的内容进行对比
"
old-old-new
I love biology
>DJAKNCKALNXLKLHDJKkljkxkxhka
2021-6-27
你好,努力攀登的科学树
"sed 's/old/new/' test.txt    #替换第一个匹配项"
new-old-new
I love biology
>DJAKNCKALNXLKLHDJKkljkxkxhka
2021-6-27
你好,努力攀登的科学树
"sed 's/old/new/g' test.txt    #替换所有匹配项
"
new-new-new
I love biology
>DJAKNCKALNXLKLHDJKkljkxkxhka
2021-6-27
你好,努力攀登的科学树
"

2.打印行

sed -n 'p' test.txt   #打印文件中所有行
"
old-old-new
I love biology
>DJAKNCKALNXLKLHDJKkljkxkxhka
2021-6-27
你好,努力攀登的科学树
"sed -n '2p' test.txt    #打印文件中第二行
"
I love biology
"sed -n '2,4p' test.txt     #打印文件中第二到第四行
"
I love biology
>DJAKNCKALNXLKLHDJKkljkxkxhka
2021-6-27
"

3.删除行

sed '/o/d' test.txt   #删除包含特定文本的所有行
"
>DJAKNCKALNXLKLHDJKkljkxkxhka
2021-6-27
你好,努力攀登的科学树
"

4.插入文本

sed 'i\bew line' test.txt      #在第一行前插入
"
bew line
old-old-new
bew line
I love biology
bew line
>DJAKNCKALNXLKLHDJKkljkxkxhka
bew line
2021-6-27
bew line
你好,努力攀登的科学树
"sed '3i\biology' test.txt       #在第三行前插入
"
old-old-new
I love biology
biology
>DJAKNCKALNXLKLHDJKkljkxkxhka
2021-6-27
你好,努力攀登的科学树
"

5.追加文本

sed 'a\new line' test.txt  #在最后一行追加文本
"
old-old-new
new line
I love biology
new line
>DJAKNCKALNXLKLHDJKkljkxkxhka
new line
2021-6-27
new line
你好,努力攀登的科学树
new line
"

6.替换特定行

sed '2s/love/like/' test.txt   #替换第二行的love,将其改为like
"
old-old-new
I like biology
>DJAKNCKALNXLKLHDJKkljkxkxhka
2021-6-27
你好,努力攀登的科学树
"

以上操作都没有改变原文件。

7.编辑原文件

 sed -i 's/old/new/g' test.txt | cat test.txt
"
new-new-new
I love biology
>DJAKNCKALNXLKLHDJKkljkxkxhka
2021-6-27
你好,努力攀登的科学树
"

http://www.lryc.cn/news/387088.html

相关文章:

  • Charles抓包工具系列文章(一)-- Compose 拼接http请求
  • OLMo:真正完全开源的大模型
  • 51单片机STC89C52RC——12.1 数据存储芯片AT24C02
  • 融入云端的心跳:在Spring Cloud应用中集成Eureka Client
  • CocosCreator构建IOS的wwise教程
  • 掌握 SQL Server 中的 FLOOR 函数:数据舍入的艺术
  • 【折腾笔记】兰空图床使用Redis做缓存
  • 【Ubuntu】如何用指令设置静态IP
  • mechanize - 自动化与HTTP web服务器的交互操作
  • 【Android】保留elevation层级效果,舍弃阴影效果
  • Java新手启航:Windows下JDK安装,开启编程之旅
  • c++指针和引用之高难度(二)习题讲解
  • UNIAPP编译到微信小程序时,会多一层以组件命名的标签
  • 工业自动化控制中心
  • 【Git】GitIgnore不生效
  • 面向对象,常用类,集合,异常,JDBC,mysql数据库内容的复习,
  • HTML5+JavaScript单词游戏
  • Windows 中的 Hosts 文件是什么?如何找到并修改它?
  • 详细分析Oracle中的tnsnames.ora基本知识 以及 PLSQL如何连接(附Demo)
  • [深度学习] 图神经网络GNN
  • MATLAB中添加 Git 子模块
  • 24级中国科学技术大学843信号与系统考研分数线,中科大843初复试科目,参考书,大纲,真题,苏医工生医电子信息与通信工程。
  • 深入剖析C语言中volatile与register关键字的实战应用与底层原理
  • vue开发网站--关于window.print()调取打印
  • OJ-选座位
  • 【子串】3. 无重复的最长子串
  • Scrapy中爬虫优化技巧分享
  • 自然语言处理-BERT处理框架-transformer
  • Kafka~消息系列问题解决:消费顺序问题解决、消息丢失问题优化(不能保证100%)
  • 如何确保日常安全运维中的数据加密符合等保2.0标准?