首页 > 系统相关 >Linux文本处理之sed

Linux文本处理之sed

时间:2023-08-13 22:56:01浏览次数:34  
标签:boy good coding 文本处理 sed Linux txt day

上次我们介绍了awk的用法,今天我接着了解sed的功能和用法。

Sed可按照脚本命令来处理和编辑文件,简化对文件的重复性操作。

命令格式

sed命令格式:sed [options] 'command' file(s);

sed脚本格式: sed [options] -f scriptfile file(s);

选项参数

 -e :直接在命令行模式上进行sed动作编辑,此为默认选项;
 
 -f :将sed的动作写在一个文件内,用–f filename 执行filename内的sed动作;
 
 -i :直接修改文件内容[慎用!修改源文件!];
 
 -n :或--quiet或--silent,只打印模式匹配的行;
 
 -r :支持扩展表达式;
 
 -h或--help:显示帮助;
 
 -V或--version:显示版本信息。

动作参数

a :新增, 在当前行下面插入文本;
c :取代, 把选定的文本改为新的文本!
d :删除, 删除指定的行;
i :插入, 在当前行上面插入文本;
p :打印, 亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行;
s :替换, 替换指定字符,搭配正则表达式;
g : 全文匹配;

案例

创建测试文件sed.txt, 如下:

$ cat sed.txt
Today is a good day, a sunny day, a wonderful day, a important day.
I am a boy, a good boy, a lovely boy.
I like reading, sports, and coding.
Enjoy coding.

1 查找

查找字符串'good'

匹配到的整行都会打印;

$ sed -n '/good/p' sed.txt
Today is a good day, a sunny day, a wonderful day, a important day.
I am a boy, a good boy, a lovely boy.

2 替换操作

1 使用替换参数s, 将文本中的 ’a‘ 替换成 ’b‘;

4 sed 's/a/b/' sed.txt
Todby is a good day, a sunny day, a wonderful day, a important day.
I bm a boy, a good boy, a lovely boy.
I like rebding, sports, and coding.
Enjoy coding.

在没有添加其他参数的情况下,我们注意到:

  1. 只有每一行的第一个匹配到的字符被替换了,其他没有;比如第一行,只有today被替换成了todby;
  2. 字符匹配,而不是单词匹配,所以today中的a被匹配到;
  3. 替换之后的文件全部输出,即便存在没有匹配到的行;
  4. 原文件没有被修改

2 只输出发生替换的行(-n和p结合使用)

$ sed -n 's/a/b/p' sed.txt
Todby is a good day, a sunny day, a wonderful day, a important day.
I bm a boy, a good boy, a lovely boy.
I like rebding, sports, and coding.

3 全文替换(动作参数g)

文本中所有的a都被替换了,并不只是每行的第一个被替换;

$ sed -n 's/a/b/gp' sed.txt
Todby is b good dby, b sunny dby, b wonderful dby, b importbnt dby.
I bm b boy, b good boy, b lovely boy.
I like rebding, sports, bnd coding.

4 直接修改原文件(选项参数-i, 慎用

$ sed -i 's/a/b/g' sed.txt
$ cat sed.txt
Todby is b good dby, b sunny dby, b wonderful dby, b importbnt dby.
I bm b boy, b good boy, b lovely boy.
I like rebding, sports, bnd coding.
Enjoy coding.

3 新增/删除操作

1 在第二行后天添加一行'that is true'

$ sed '2a that is true' sed.txt
Today is a good day, a sunny day, a wonderful day, a important day.
I am a boy, a good boy, a lovely boy.
that is true
I like reading, sports, and coding.
Enjoy coding.

2 删除第2~4行

结合nl命令和管道显示出行号;

$ nl sed.txt | sed '2,4d'
1  Today is a good day, a sunny day, a wonderful day, a important day.

标签:boy,good,coding,文本处理,sed,Linux,txt,day
From: https://www.cnblogs.com/bailiji/p/17627469.html

相关文章

  • Linux目录结构及详细介绍
    Linux的目录结构是一个层次化的文件系统结构,每个目录都有特定的用途和功能。下面是Linux目录结构的详细介绍:/(根目录):整个文件系统的起始点,所有其他目录都是根目录的子目录。/bin:存放系统中的可执行命令(二进制文件),如ls、cp等。/boot:存放启动Linux系统所需的文件,包括内核文件和引导加......
  • Linux中断底半部机制总结
    转载:Linux中断底半部机制总结-闹闹爸爸-博客园(cnblogs.com)linux实现底半部的机制主要有tasklet、workqueue、softirq和线程化irq。1.tasklettasklet的使用较为简单,它的执行上下文是软中断,所以在tasklet中不能睡眠,它的执行时机通常是中断顶半部返回的时候。我们只需要定......
  • Linux之shell脚本的正则表达式
    目录一、正则表达式1.1元字符1.2表示次数一、正则表达式通配符功能是用来处理文件名,而正则表达式是处理文本内容中字符[localhost~]#man7regex#可以使用man手册帮助1.1元字符. 匹配任意单个字符,可以是一个汉字[] 匹配指定范围内的任意单个字符,示例:[zhou]......
  • ​​Linux搭建GitLab私有仓库
    @[TOC]转载自远控源码文章:Linux搭建GitLab私有仓库,并内网穿透实现公网访问前言GitLab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。Gitlab是被广泛使用的基于git的开源代码管理平台,基于RubyonRails构建,主要针对软件开发过程中产......
  • linux下nginx安装
    mkdir/var/log/nginx/redhad6.4nginx的安装(root用户)进入到/usr/local/src目录下进行(#cd/usr/local/src)安装pcre软件包#wgetftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.43.tar.gz#tar-zxvfpcre......
  • nginx安装-linux
    mkdir/var/log/nginx/redhad6.4nginx的安装(root用户)进入到/usr/local/src目录下进行(#cd/usr/local/src)安装pcre软件包#wgetftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.43.tar.gz#tar-zxvfpcre......
  • redhad安装linux
    mkdir/var/log/nginx/redhad6.4nginx的安装(root用户)进入到/usr/local/src目录下进行(#cd/usr/local/src)安装pcre软件包#wgetftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.43.tar.gz#tar-zxvfpcre......
  • Linux常用命令
    Linux常用命令mkdirmkdir感谢老铁的花花感谢老铁送上的飞机mkdir-p斗鱼/lol虎牙/王者农药tree树的意思,以树状图显示文件目录的层级结构#确保你的机器可以上网,yum如同pip一样,自动的安装东西,解决依赖#pip是给python安装模块的工具#yum是给linux安装......
  • Linux系统之安装PDF阅读器
    (Linux系统之安装PDF阅读器)一、PDF介绍1.PDF简介PDF是PortableDocumentFormat(便携文件格式)的缩写,是一种电子文件格式,与操作系统平台无关,由Adobe公司开发而成。2.PDF特点兼容性强:能够跨越不同的操作系统使用,也不会受到打开软件的限制。易于传输:pdf格式的文件体积比......
  • linux笔记-基础命令
    关机命令shutdown-hnow/10 #现在/10分钟shutdown-c #取消shutdown-r 5 #重启halt #直接关机reboot #直接重启 poweroff #直接关机检查网卡地址配置ipaddressshowipa图形界面修改网卡地址信息nmtui注销exit创建目录mkdirmkdir-p #......