sed命令

作者: aq_wzj | 来源:发表于2019-11-04 12:45 被阅读0次

原文地址: https://www.jianshu.com/p/89163e927a2c

0. 目录

1.简介
2.子命令
    2.1 p--输出
    2.2 i--插入行
    2.3 a --追加行
    2.4 d删除行
    2.5 c替换行
    2.6 s替换指定文本

  1. 子命令组合

1. 简介

在命令行对文本进行操作, 如替换某文字, 插入文字, 删除文字等

语法格式

sed [options] commands [inputfile...]

commands会包含一些子命令,如p代表打印ia代表插入和追加,d代表删除行c代表替换行s代表替换单词

option包含的一些选项及其作用如下

选项名 作用
-n 取消默认输出
-e 多点编辑,可以执行多个子命令
-f 从脚本文件中读取命令(sed操作可以事先写入脚本,然后通过-f读取并执行)
-i 直接编辑原文件
-l 指定行的长度
-r 在脚本中使用扩展表达式

测试文本
root@wzj-dev:/opt# cat test1.txt

letitia
mail
uuencode
1003605091
01566

sed命令处理时只会改变缓冲区中文本的副本,如果想要直接编辑原文件,可以使用-i选项或者将结果重定向到新的文件中。

以下实验均为缓冲区操作,未改变源文件

2. 子命令

2.1 p--输出

2.1.1 打印1-3行

root@wzj-dev:/opt# sed '1,3 p' test1.txt
letitia
letitia
mail
mail
uuencode
uuencode
1003605091
01566

因为未加-n选项,所以除了打印第1-3行外, 还有个默认打印, 导致第1-3行打印两遍

root@wzj-dev:/opt# sed -n '1,3 p' test1.txt 
letitia
mail
uuencode

2.1.2 正则 --打印ma开头的那一行到最后一行

root@wzj-dev:/opt# sed -n '/^ma/,$ p' test1.txt
mail
uuencode
1003605091
01566

2.1.3 设置步长--- 第一行开始,行号递增2输出

root@wzj-dev:/opt# sed -n '1~2 p' test1.txt
letitia
uuencode
01566

2.2 i--插入行

在第二行前插入一行insert111字符串

#-e选项表示多个子命令,本例执行i子命令之后执行了p子命令
root@wzj-dev:/opt# sed -n -e '2 i insert111' -e '1,4 p' test1.txt 
letitia
insert111
mail
uuencode
1003605091

2.3 a --追加行

在第二行之后追加一行append111字符串

root@wzj-dev:/opt# sed -n -e '2 a append111' -e '1,4 p' test1.txt
letitia
mail
append111
uuencode
1003605091

2.4 d删除行

删除第二行

root@wzj-dev:/opt# sed -n -e '2 d' -e '1,$ p' test1.txt
letitia
uuencode
1003605091
01566

2.5 c替换行

将第二行的mail替换为newmail

root@wzj-dev:/opt# sed -n -e '2 c newmail' -e '1,$ p' test1.txt
letitia
newmail
uuencode
1003605091
01566

2.6 s替换指定文本

2.6.1 语法格式

sed '位置参数 s/pattern/replaced/[flag]'

位置参数: 与前面一样, 可以为'1,$',支持正则,也可以不指定
s: 子命令,代表替换指定文本
pattern: 要替换的文本,支持正则表达式
replaced: 用来替换的一般字符串
flag是替换标志,用来影响匹配替换的规则:
flag 用法
g 全局匹配,会替换文本行中所有匹配的字符串
十进制n 替换文本行中第n个匹配的字符串
p 替换第一个匹配的字符串,并且将缓冲区输出到标准输出
w 替换第一个匹配的字符串,并且将改动的行输出到磁盘文件中
缺省 替换第一个匹配的字符串

2.6.2 实验

  1. 将有十个数字的那一行替换为miss letitia
#{}要转义
root@wzj-dev:/opt# sed -n -e 's/[0-9]\{10\}/miss letitia/g' -e '1,$ p' test1.txt
letitia
mail
uuencode
miss letitia
01566
  1. 从第一行开始,到以字符ma开头的那一行, 里面的l全转为大写L
sed -n -e '1,/^ma/ s/l/L/g' -e '1,$ p' test1.txt
Letitia
maiL
uuencode
1003605091
01566

3. 子命令组合

对第1-3行做如下操作

  1. l全转为大写L
  2. e全转为大写E
  3. 在第二行前插入一行tyrone字符串
  4. 打印出来 ( 原来的三行加上插入的一行 )
root@wzj-dev:/opt# sed -n '1,3{
            s/l/L/g
            s/e/E/g
            2 i tyrone
            p
            }' test1.txt
LEtitia
tyrone
maiL
uuEncodE

相关文章

  • linux || sed(2)

    调用sed有三种方式: 在命令行键入命令; 将sed命令插入脚本文件,然后调用sed; 将sed命令插入脚本文件,...

  • sed命令

    sed命令 对比用paste和tr命令将fastq文件转换为fasta文件 paste sed命令 sed用法

  • 【linux命令之sed】

    sed的选项、命令、替换标记 命令格式 sed [options] 'command' file(s)sed [o...

  • linux sed

    Sed简介 定址 Sed命令

  • LINUX sed命令的使用

    LINUX sed命令的使用 命令格式 sed常用命令 sed替换标记 sed元字符集 已匹配字符串标记& ⼦串匹...

  • Linux-sed-1

    #############20190820- sed命令用法详解 sed命令用法 sed是一种流编辑器,它是文本处...

  • [2020春假]Linux下的文本操作(sed篇)

    Chapter4 sed替换命令详解 sed的替换命令是最常用的,也是讲解最多的。sed的模式空间 sed的基本工...

  • Linux 去除文件中空行的几种方式

    tr 命令 sed 命令 awk 命令 grep 命令

  • Linux运维常用

    网络命令 Vim命令 sed命令 grep 命令

  • sed常用操作命令

    sed: stream editor , 流/行 编辑器 ; sed 命令详解: sed [OPTIONS].....

网友评论

      本文标题:sed命令

      本文链接:https://www.haomeiwen.com/subject/bhorbctx.html