shell中sed的使用

1.在命令行定义编辑器命令

命令格式 sed options script file

sed不会修改文本文件的数据,他只会将修改后的数据发送到STDOUT。

2.在命令行上使用多个编辑器命令

将命令放在一个文件中

3.s命令使用替换标记

.数字代表新文本将替换第几处模式匹配的地方

.g,替换所有的

。p,原来的内容打印出来

。w file,将替换的结果写到文件。

-n命令禁止打印模式空间,-n和p一起使用只打印替换的行。

4.使用地址

4.1指定行

sed ‘2s/dog/cat/‘ data1

sed ‘2,3s/dog/cat/‘ data1

sed ‘2,$s/dog/cat/‘ data1

4.2匹配文本模式

sed ‘/farsight/s/bash/csh/‘ /etc/passwd

4.3组合命令

5.删除行

sed ‘d‘ data1 全部删除

sed ‘3d‘ data1 删除第三行

sed ‘2,3d‘ data1 删除2-3行

sed ‘/quick/d‘ data1 删除匹配到quick的行

删除两个模式之间的行。

sed ‘/1/,/3/d‘ data1 删除匹配到1至匹配到3的行

6.插入和附加文本

sed ‘3i\

>this is a inserted line.‘ data1 插入3行前面

sed ‘3a\

>this is a inserted line.‘ data1 放在第3行后面

sed ‘$a\

>this is a inserted line.‘ data1 放在最后一行后面

插入多行

7.修改行

sed ‘3c\

>this is a changed line.‘ data1 将第3行修改为

sed ‘/number1/c\

>this is a changed line.‘ data1 修改匹配的行

sed ‘2,3c\

>this is a changed line.‘ data1 修改2至3行

8.打印p

sed -n ‘2,3p‘ data1 打印2至3行

sed -n ‘/3/{

>p

>s/line/test/p

>}‘ data1 打印第三行,和匹配line后替换的行。

打印行号

sed ‘=‘ data1

打印匹配行的行号

9.和文件一起工作

写入文件

sed ‘1,2w test‘ data1 data1的1至2行写入test

从文件中读取数据

将data3中的数据放在data2的第2行后面

sed ‘$r data3‘ data2 将data3中的数据放在data2的最后面

sed ‘/line1/r data3‘ data2 读取data3放在data2中匹配line1的后面

炫技时刻:

在匹配到tag后写入文件data3的内容,然后删除tag

------------------------------------------------

sed进阶

1.

n:读取下一行到模式空间

N:附加下一行到模式空间

P:Print up to the first embedded newline of the current pattern space.

D:Delete up to the first embedded newline in the pattern space. Start next cycle, but skip reading from the input if  there is still data in
the pattern space.

2.模式空间与保持空间


h

将模式空间复制到保持空间

H

将模式空间附加到保持空间

g

将保持空间复制到模式空间

G

将保持空间附加到模式空间
x
交换模式空间与保持空间的内容

翻转一个文件,利用模式空间和保持空间翻转文件。

排除命令!:打印不匹配的行

3.改变流

跳转命令

b [lable]

不加lable时跳转到脚本末尾,加了lable跳转到对应的lable。

也可以跳到前面的标签

测试

t [lable]

当前一条命令成立时才跳转。

4.模式替换

4.1and(&)符号

&代表前面匹配到的东西。

4.2替换单独的单词

当匹配到name is的时候,只提取出name,\1代表第一个圆括号里面的内容。

5.在脚本中使用sed

将sed命令封装在脚本中。

重定向sed的输出,使用``将sed的输出赋值给变量。

6.创建sed实用脚本

6.1加倍行间距

利用保持空间默认值。

对含有多个空白行的加倍行间距,思路是先删除所有的空白行,在加入空白行。

6.2给文件中的行编号

6.3打印末尾行

使用滑动窗口显示最后几行。

$q遇到最后一样就退出,N读取下一行到模式空间,11,$D从第11行到最后一行都要删除模式空间的第一行。所以窗口大小为10行。

6.4删除连续的空白行

创建一个任意字符开始,到空白行的区间结束的区间。

6.5删除开头的空白行

创建一个任意字符到结尾行的区间。

6.6删除末尾的行

收集所有末尾的空白行删除。

时间: 2024-11-08 10:15:41

shell中sed的使用的相关文章

python3-file的修改实现类似shell中sed的功能

# Auther: Aaron Fan '''思路:目的是为了修改yesterday这个文件,但是因为无法直接去修改这个文件,所以需要先把修改好的内容写入高yesterday.new这个文件中,然后再把yesterday.new的内容覆盖到yesterday这个文件中 f = open('yesterday','r',encoding='utf-8')f_new = open('yesterday.new','w',encoding='utf-8') for line in f: if "肆意的

shell中sed用法

简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有 改变,除非你使用重定向存储输出.Sed主要用来自动编辑一个或多个文件:简化对文件的反复操作:编写转换程序等. sed使用参数 [[email protected] ~]# sed [-nefr] [动作] 选项与参数: -n

shell中sed命令

sed -i '/cd ${LDIR_DEST}\/webextend\/pc && ln -s \/hard\/www_winclient\/bboxpc.exe ./a\ \tcd ${LDIR_DEST}\/webextend\/pc && ln -s \/hard\/www_winclient\/'$i' .' #参考别人后自己改的,主要是加了个变量 sed -i '4i dfsdfdsad' xxx.txt #Insert contents between the

在shell中使用sed命令替换/为\/

sed命令相关: https://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856901.html https://www.cnblogs.com/DragonFire/p/6600121.html 这里我们要做的功能是: 输入一个目录"/data/data8" 在shell中将其变换为"\/data\/data8" (这是为了能在shell后边的sed命令中直接使用) 先来看看直接使用命令如何实现: echo &q

linux下shell脚本中sed命令的用法

先来给一个案例: #将old.sql文件中的符号“|”替换为“,”,并保存到test.sql文件中 sed "s/|/,/g" "old.sql"> test.sql #将test.sql文件中的每一行最后的符号“,”删除 sed -i 's/,$//g' test.sql #在test.sql文件中每行的开头添加左括号“(” sed -i 's/^/(&/g' test.sql #在test.sql文件中每一行的末尾添右括号“)” sed -i 's

shell中常用的特殊符号

在shell中常用的特殊符号罗列如下: # ; ;; . , / \ 'string'| ! $ ${} $? $$ $* "string"* ** ? : ^ $# [email protected] `command`{} [] [[]] () (()) || && {xx,yy,zz,...}~ ~+ ~- & \<...\> + - %= == != # 井号 (comments) 注释字符 该句不会被执行 ~ 帐户的 home 目录 用户的

shell中怎么判断输入的是否是数字

在shell中我们经常要面临一个问题就是,怎么判断我交互式的前端,使用者输入的是否是数字呢?这里小编我也就会两种方法,所以今天就在这说一说 第一种:sed格式 首先:我们先(在命令行直接输出模拟一下,如果都正确再在shell脚本中进行书写.)直接echo输出一下 echo "111asd" 第一步:思想 然后我们就要想一下我们要说用sed判断,但是sed的最主要的功能是什么?替换!!!当然是替换,既然是替换那么我们能不能直接把echo输出的数字直接替换掉,然后看这个输出还剩下什么呢?如

shell中的变量及shell条件判断

Shell 基础之变量和条件判断 一.shell概述 1.shell概述: shell是一个命令行的解释器,为用户提供了一个向Linux内核发送请求以便运行程序的界面系统及程序,用户可以用shell来启动.挂起.停止甚至编写一些程序,shell还是一个功能强大的编程语言,shell是解释性的脚本语言,在shell中可以直接调用Linux命令. 2.shell脚本的用途 (1)自动化常用的命令 (2)执行系统管理和故障排除 (3)执行简单的应用程序 (4)处理文本或文件 3.shell的分类 (1

二、Shell中的变量

变量是任何程序或脚本的重要组成部分.变量为程序或脚本访问内存中的可被修改的一块数据提供了简单的方式.Linux Shell中的变量可以被指定为任意的数据类型.Shell中有两种变量的类型:系统变量(环境变量)和用户自定义的变量(本地变量或Shell变量). 环境变量:作用域为当前shell进程及其子进程:环境变量一般均为大写.常用的环境变量有: 系统变量 含义 BASH_VERSION 保存bash实例的版本 DISPLAY 设置X display名字 EDITOR 设置默认的文本编辑器 HIS