首页 > 系统相关 >Linux 行文本处理工具sed

Linux 行文本处理工具sed

时间:2024-07-23 08:57:59浏览次数:12  
标签:文件 文本 -- 文本处理 sed Linux txt example

sed(stream editor)是Linux和Unix系统中非常强大的文本处理工具,它可以对文本进行过滤和转换。sed以行为单位处理文本,可以通过读取输入文件(或标准输入),应用一系列的编辑命令,然后将结果输出到标准输出(通常是屏幕)或文件中。

基本语法

sed [选项]... {脚本-地址} {命令} [输入文件]...
  • 选项sed命令的选项用于控制其行为,如-i用于直接修改文件内容。
  • 脚本-地址:指定要应用命令的行号或模式。如果没有指定,命令将应用于所有行。
  • 命令:要执行的sed编辑命令。
  • 输入文件:要处理的文件名。如果没有指定输入文件,sed将从标准输入读取数据。

常用命令

  • s/查找的文本/替换的文本/标志:替换文本。标志可以是g(全局替换),i(忽略大小写)等。
  • d:删除指定的行。
  • p:打印指定的行。
  • a\text:在指定行后追加新文本。
  • i\text:在指定行前插入新文本。
  • c\text:用新文本替换指定行。

示例

  1. 替换文本:将文件example.txt中所有的"apple"替换为"orange"。

    sed 's/apple/orange/g' example.txt
    

    注意:此命令不会修改原文件,只是将结果输出到标准输出。

  2. 直接修改文件:将文件example.txt中所有的"apple"替换为"orange",并直接修改文件内容。

    sed -i 's/apple/orange/g' example.txt
    

    注意:-i选项用于直接修改文件。根据sed的版本,可能需要指定一个扩展名作为备份,如-i.bak

  3. 删除行:删除文件example.txt中所有包含"banana"的行。

    sed '/banana/d' example.txt
    
    sed -i '/banana/d' example.txt
    
    -- 删除example.txt从第二行到第八行数据
    sed '2,8d' example.txt
    
  4. 打印特定行:打印文件example.txt的第2行。

    sed -n '2p' example.txt
    

    注意:-n选项与p命令一起使用时,sed只打印那些被p命令选中的行。

    查一下example.txt的最后一行(明确查看确定只有10行为前提)

     -- 这种方法可行 但是需要查询或定位你的最后一行的行号
     sed -n '10p' example.txt  
    
     -- 这种方法直接就定位了
     sed -n '$p' example.txt  
     
     -- 查一下example.txt的第七行到第十行的内容
     sed -n '7,10p' example.txt  
    
  5. 在指定行前插入文本:在文件example.txt的第2行前后插入文本"New line"。

    -- 第2行前插入文本"New line"
    sed -i '2i\New line' example.txt
    
    -- 第2行后插入文本"New line"
    sed -i '2a\New line' example.txt
    
    -- 这是在最后一行行前添加字符串
    sed -i '$i 192.0.2.80 tidb80' /etc/hosts  
    
    -- 这是在最后一行行后添加字符串
    sed -i '$a 192.0.2.80 tidb80' /etc/hosts  
    
  6. 关闭 /etc/selinux/config

    -- 第一种方法(精确匹配法)
    sed 's#SELINUX=enforcing#SELINUX=disabled#' /etc/selinux/config
    
    -- 第二种方法(正则表达式匹配法)
    sed 's#SELINUX=.*#SELINUX=disabled#g' /etc/selinux/config (正则表达式匹配法)
    

sed的功能非常强大,通过组合不同的命令和选项,可以完成复杂的文本处理任务。然而,由于其语法相对复杂,初学者可能需要一些时间来熟悉和掌握它。

标签:文件,文本,--,文本处理,sed,Linux,txt,example
From: https://blog.csdn.net/zxrhhm/article/details/140610695

相关文章

  • Linux标准大页设置不合理案例
    Oracle数据库中如果标准大页设置不合理,可能导致物理内存被浪费掉。下面介绍一个案例:查看标准大页的信息,如下所示:$ grep HugePages /proc/meminfoAnonHugePages:         0 kBShmemHugePages:        0 kBFileHugePages:         0 kBHugePages_......
  • Qmi8658a姿态传感器使用心得(4)linux
    1.FIFO结构与大小FIFO数据可以包含陀螺仪和加速度计数据,通过SPI/I2C/I3C接口以突发读模式读取。FIFO大小可配置为16样本、32样本、64样本或128样本(每个样本为6字节)。2.FIFO模式Bypass模式:禁用FIFO功能。FIFO模式:FIFO满后停止写入新数据,直到主机读取FIF......
  • 5.Linux配置静态ip
    1.安装VMwareVMware虚拟机保姆级安装教程2.安装Linux系统VMware安装Linux系统保姆级教程3.打开虚拟机:编辑 -- 虚拟网络编辑器4.在编辑器窗口中,选中NAT模式,将最下面的 子网IP,修改成 192.168.222.05.打开DHCP设置,确定自己的起始IP和结束IP6.打开NAT设置,......
  • 【C语言】Linux 飞翔的小鸟
    【C语言】Linux飞翔的小鸟零、环境部署安装Ncurses库sudoapt-getinstalllibncurses5-dev壹、编写代码代码如下:bird.c#include<stdio.h>#include<time.h>#include<stdlib.h>#include<signal.h>#include<curses.h>#include<sys/time.h>#include<u......
  • linux执行vcfmaf命令perl vcf2maf.pl xxx,如何将vcf2maf.pl添加到环境变量,使得脚本可以
    要将vcf2maf.pl(或任何其他Perl脚本)添加到环境变量中,以便能够直接在命令行中调用它,你实际上不需要将脚本本身添加到PATH环境变量。PATH环境变量用于查找可执行文件(通常是编译后的二进制文件),而不是脚本。但是,由于Perl脚本可以通过Perl解释器执行,你可以通过几种方式来实现类似的功能......
  • SkiaSharp画的验证码在Linux下无法正常显示
    SkiaSharp是Google的Skia图形库的.NET封装版,可用于跨移动、服务器和桌面平台绘制2D图形。SkiaSharp可与OpenGL一起用于硬件加速渲染。SkiaSharp最初由Mono开发,但现在由Microsoft维护,并根据MITLicense提供。使用SkiaSharp生成验证码图片示例代码usingSkiaSharp......
  • Linux-shell脚本链接Oracle执行查询
    #!/bin/bash#zkm2024-07-22Linux脚本链接Oracle数据库,用户判断sftp、ftp生成文件目录是否为空,若为空则短信表插入一条数据,用于短信提醒。#注意:#1、当前服务器需要安装Oracle客户端#2、sqlplus验证连接Oracle正常#当前时间date_time=`date+"%Y%m%d%H%M"`#输出时间echo"开......
  • linux最大线程数限制及打开最大文件数
    1.root用户下执行ulimit-a然后查看maxuserprocesses这个值通常是系统最大线程数的一半maxuserprocesses:当前用户同时打开的进程(包括线程)的最大个数为  2.普通用户下ulimit-a出现的maxuserprocesses的值默认是/etc/security/limits.d/20-nproc.conf文件中......
  • Linux--进程绑定NUMA节点或CPU核心
    对于CPU和NUMA架构的介绍本文不再做叙述,感兴趣的可自行查看:Linux--CPU简述,Linux--内存管理浅谈。 1、进程绑定NUMA节点或cpu核心的意义NUMA架构将内存和cpu分散在不同的NUMA节点上,每个节点都有自己的本地内存和cpu处理器,将进程绑定到特定的NUMA节点或cpu上,可以让进程直接......
  • linux内核 ip_unprivileged_port_start
    ip_local_port_range定义了TCP和UDP用于选择本地端口的范围。这个范围由两个整数表示,第一个数字是范围的起始端口号,第二个数字是范围的结束端口号。通常建议这两个数字的奇偶性不同(一个为偶数,一个为奇数),这样可以在一定程度上提高端口分配的随机性和安全性。这两个数字必须大于或......