Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >linux基础命令介绍十:文本流编辑 sed

linux基础命令介绍十:文本流编辑 sed

作者头像
用户5030870
发布于 2019-04-10 07:54:10
发布于 2019-04-10 07:54:10
1.1K00
代码可运行
举报
文章被收录于专栏:self_studyself_study
运行总次数:0
代码可运行

vim不同,sed是一种非交互式的文本编辑器,同时它又是面向字符流的,每行数据经过sed处理后输出。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sed [OPTION]... [script] [file]...

sed的工作过程是这样的:首先,初始化两个数据缓冲区模式空间保持空间sed读取一行输入(来自标准输入或文件),去掉结尾的换行符(\n)后置于模式空间中,然后针对模式空间中的字符串开始执行‘sed命令’,每个命令都可以有地址与之相关联,地址可以看成是条件,只有在条件成立时,相关的命令才被执行;所有可执行命令都处理完毕后,仍处于模式空间中的字符串会被追加一个换行符后打印输出;之后读取下一行输入做同样的处理,直到主动退出(q)或输入结束。

地址

地址可以是如下的形式

1、number 表示行号 2、first~step 表示从first(数字)行开始,每隔step(数字)行 3、$ 表示最后一行(注意当出现在正则表达式中时表示行尾) 4、/regexp/ 表示匹配正则表达式regexp(关于正则表达式,请参见这一篇) 5、\%regexp% 表示匹配正则表达式regexp,%可以换成任意其他单个字符。(用于regexp包含斜线/的情况) 6、/regexp/I 匹配正则表达式regexp时不区分大小写 7、/regexp/M 启用正则多行模式,使$不止匹配行尾,还匹配\n或\r之前的位置;使^不止匹配行首,还匹配\n或\r之后的位置。此时可以用(\`)匹配模式空间的开头位置,用(\')匹配模式空间的结束位置。

还可以用逗号,分隔两个地址来表示一个范围

表示从匹配第一个地址开始,直到匹配第二个地址或文件结尾为止。如果第二个地址是个正则表达式,则不会对第一个地址匹配行进行第二个地址的匹配;如果第二个地址是行号,但小于或等于第一个地址匹配行行号,则只会匹配一行(第一个地址匹配行)。

8、0,/regexp/ 这种情况下,正则表达式regexp会在第一行就开始进行匹配。只有第二个地址是正则表达式时,第一个地址才能用0。 9、addr1,+n表示匹配地址addr1和其后的n行。 10、addr1,~n表示从匹配地址addr1开始,直到n的倍数行为止。 如果没有给出地址,所有的行都会匹配;在地址或地址范围后追加字符!表示对地址取反,所有不匹配的行才会被处理。

选项

-n 默认时每一行处理过的字符串都会被打印输出,此选项表示关闭此默认行为。只有被命令p作用的字符串才会被输出。 -f file表示从file中读取sed命令 -i 表示原地修改。应用此选项时,sed会创建一个临时文件,并将处理结果输出到此文件,处理完毕后,会将此临时文件覆盖至原文件。 -r 表示使用扩展的正则表达式

命令

p表示打印模式空间内容,通常配合选项-n一起使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@centos7 ~]# seq 5
1
2
3
4
5
[root@centos7 ~]# 只输出第二行到第四行
[root@centos7 ~]# seq 5|sed -n '2,4p'
2
3
4
[root@centos7 ~]# 

d 删除模式空间内容,立即处理下一行输入。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#删除最后一行
[root@centos7 ~]# seq 5|sed '$d'
1
2
3
4
[root@centos7 ~]#

q 立即退出,不再处理任何命令和输入(只接受单个地址)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@centos7 ~]# seq 5|sed '/3/q'
1
2
3
[root@centos7 ~]#

n 如果没有使用选项-n,输出模式空间中内容后,读取下一行输入并覆盖当前模式空间内容。如果没有更多的输入行,sed会退出执行。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@centos7 ~]# seq 9|sed -n 'n;p'
2
4
6
8
[root@centos7 ~]# 注意多个命令用分号分隔

s/regexp/replacement/flag 表示用replacement替换模式空间中匹配正则表达式regexp的部分。在这里符号/可以换成任意单个字符。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@centos7 ~]# echo "hello123world"|sed 's/[0-9]\+/,/'  
hello,world
#注意这里+需要转义,如果使用选项-r则无需转义

在replacement中

1、\n (n为1-9中的一个数字)表示对正则表达式中分组(...)的引用;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@centos7 ~]# echo "hello123world"|sed -r 's/[a-z]+([0-9]+)[a-z]+/\1/'
123
[root@centos7 ~]# echo "hello123world"|sed -r 's/([a-z]+)[0-9]+([a-z]+)/\1,\2/'
hello,world

2、&表示模式空间中所有匹配regexp的部分;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@centos7 ~]# echo "hello123world"|sed -r 's/[0-9]+/:&:/'
hello:123:world

3、\L 将后面的字符转化成小写直到 \U 或 \E 出现; 4、\l 将下一个字符转化为小写; 5、\U 将后面的字符转化成大写直到 \L 或 \E 出现; 6、\u 将下一个字符转化为大写; 7、\E 停止由 \L 或 \U 起始的大小写转化;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@centos7 ~]# echo "hello123world"|sed -r 's/^([a-z]+)[0-9]+([a-z]+)$/\U\1\E,\u\2/'
HELLO,World
[root@centos7 ~]# 

flag

1、n数字n表示替换第n个匹配项

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@centos7 ~]# head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
#替换冒号分隔的第五部分为空
[root@centos7 ~]# head -1 /etc/passwd|sed 's/[^:]\+://5'
root:x:0:0:/root:/bin/bash

2、g表示全局替换

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@centos7 ~]# echo "hello123world"|sed 's/./\U&\E/'
Hello123world
[root@centos7 ~]# 
[root@centos7 ~]# echo "hello123world"|sed 's/./\U&\E/g'
HELLO123WORLD
[root@centos7 ~]#
#当数字n和g同时使用时,表示从第n个匹配项开始替换一直到最后匹配项
[root@centos7 ~]# head -1 /etc/passwd|sed 's/[^:]\+://4g'
root:x:0:/bin/bash/

3、p表示如果替换成功,则打印模式空间内容。 4、w file表示如果替换成功,则输出模式空间内容至文件file中。 5、Ii表示匹配regexp时不区分大小写。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@centos7 ~]# echo 'HELLO123world'|sed -r 's/[a-z]+//Ig'
123
[root@centos7 ~]#

6、Mm表示启用正则多行模式(如前所述)。(讲命令N时再举例)

y/source-chars/dest-chars/把source-chars中的字符替换为dest-chars中对应位置的字符,/可以换为其他任意单个字符,source-chars和dest-chars中字符数量必须一致且不能用正则表达式。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@centos7 ~]# echo hello|sed 'y/el/LE/'      
hLEEo
[root@centos7 ~]#

a text表示输出模式空间内容后追加输出text内容

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@centos7 ~]# seq 3|sed '1,2a hello' 
1
hello
2
hello
3
[root@centos7 ~]#

i text表示输出模式空间内容之前,先输出text内容

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@centos7 ~]# seq 3|sed '$ihello'
1
2
hello
3
[root@centos7 ~]# 

c text表示删除匹配地址或地址范围的模式空间内容,输出text内容。如果是单地址,则每个匹配行都输出,如果是地址范围,则只输出一次。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@centos7 ~]# seq 5|sed '1,3chello'
hello
4
5
[root@centos7 ~]# seq 5|sed '/^[^3-4]/c hello' 
hello
hello
3
4
hello

=表示打印当前输入行行号

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@centos7 ~]# seq 100|sed -n '$='
100
[root@centos7 ~]# seq 100|sed -n '/^10\|^20/='
10
20
100
[root@centos7 ~]# 转义的|表示逻辑或

r file表示读取file的内容,并在当前模式空间内容输出之后输出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@centos7 ~]# cat file 
hello world
[root@centos7 ~]# seq 3|sed '1,2r file'
1
hello world
2
hello world
3
[root@centos7 ~]# 

w file表示输出模式空间内容至file中 N读入一行内容至模式空间后,再追加下一行内容至模式空间(此时模式空间中内容形如 line1\nline2 ),如果不存在下一行,sed会退出。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@centos7 ~]# seq 10|sed -n 'N;s/\n/ /p'
1 2
3 4
5 6
7 8
9 10
[root@centos7 ~]#
#s命令的m flag举例
[root@centos7 ~]# seq 3|sed 'N;s/^2/xxx/' 
1
2
3
[root@centos7 ~]# seq 3|sed 'N;s/^2/xxx/m'    
1
xxx
3
[root@centos7 ~]# seq 3|sed 'N;s/1$/xxx/' 
1
2
3
[root@centos7 ~]# seq 3|sed 'N;s/1$/xxx/M'
xxx
2
3

D如果模式空间中没有新行(如命令N产生的新行),则和命令d起同样作用;如果包含新行,则会删除第一行内容,然后对模式空间中剩余内容重新开始一轮处理。(注意:D后面的命令将会被忽略)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@centos7 ~]# seq 5|sed 'N;D'  
5
[root@centos7 ~]# seq 5|sed 'N;N;D'   
3
4
5

P打印模式空间中第一行内容

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@centos7 ~]# seq 10|sed -n 'N;P' 
1
3
5
7
9
[root@centos7 ~]# seq 10|sed -n 'N;N;P'
1
4
7
#注意另一种写法输出中的不同
[root@centos7 ~]# seq 10|sed -n '1~3P' 
1
4
7
10

g用保持空间中的内容替换模式空间中的内容

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@centos7 ~]# seq 5|sed -n 'g;N;s/\n/xx/p'
xx2
xx4
[root@centos7 ~]# 

G追加一个换行符到模式空间,然后再将保持空间中的内容追加至换行符之后。(此时模式空间中内容形如 PATTERN\nHOLD )

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@centos7 ~]# seq 5|sed 'G;s/\n/xx/'  
1xx
2xx
3xx
4xx
5xx

h用模式空间中的内容替换保持空间中的内容(注意此时模式空间中的内容并没有被清除)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@centos7 ~]# seq 5|sed -n 'h;G;s/\n/xx/p'
1xx1
2xx2
3xx3
4xx4
5xx5
[root@centos7 ~]# seq 5|sed -n 'h;G;G;s/\n/xx/gp'
1xx1xx1
2xx2xx2
3xx3xx3
4xx4xx4
5xx5xx5

H追加一个换行符到保持空间,然后再将模式空间中的内容追加至换行符之后。(此时保持空间中内容形如 HOLD\nPATTERN )

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@centos7 ~]# seq 3|sed -n 'H;G;s/\n/xx/gp'
1xxxx1
2xxxx1xx2
3xxxx1xx2xx3
[root@centos7 ~]# 

x交换模式空间和保持空间的内容

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@centos7 ~]# seq 9|sed -n '1!{x;N};s/\n//p'
3
25
47
69
#处于{...}之中的是命令组

: label为分支命令指定标签位置(不允许地址匹配) b label无条件跳转到label分支,如果省略了label,则跳转到整条命令结尾(即开始下一次读入)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#如删除xml文件中注释部分(<!--...-->之间的部分是注释,可以多行)
sed '/<!--/{:a;/-->/!{N;ba};d}' server.xml
#表示匹配<!--开始,在匹配到-->之前一直执行N,匹配到-->之后删除模式空间中内容
#如在nagios的配置文件中,有许多define host{...}的字段,如下所示:
define host{
use windows-server
host_name serverA
hostgroups 060202
alias 060202
contact_groups yu
address 192.168.1.1
}
#现在需要删除ip地址是192.168.1.1的段,可以这样:
sed -i '/define host/{:a;N;/}/!ba;/192\.168\.1\.1/d}' file
#注意和前一个例子中的区别

t label在一次输入后有成功执行的s替换命令才跳转到label,如果省略了label,则跳转到整条命令结尾(即开始下一次读入)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#如行列转换
[root@centos7 ~]# seq 10|sed ':a;$!N;s/\n/,/;ta'
1,2,3,4,5,6,7,8,9,10
[root@centos7 ~]#
#如将MAC地址78A35114F798改成带冒号的格式78:A3:51:14:F7:98
[root@centos7 temp]# echo '78A35114F798'|sed -r ':a;s/\B\w{2}\b/:&/;ta'
78:A3:51:14:F7:98
[root@centos7 temp]#
#这里\b表示匹配单词边界,\B表示匹配非单词边界的其他任意字符
#当然也可以采用其他的方式实现:
[root@centos7 temp]# echo '78A35114F798'|sed -r 's/..\B/&:/g'
78:A3:51:14:F7:98
[root@centos7 temp]#

T label在一次输入后只要没有替换命令被成功执行就跳转到label,如果省略了label,则跳转到整条命令结尾(即开始下一次读入) z表示清除模式空间中内容,和s/.*//起相同的作用,但更有效。

更多例子

1、删除匹配行的上一行和下一行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#例如输入数据为命令seq 10的输出(当然也可以是任意其他文件内容)
#要求删除匹配5那一行的前一行和后一行
[root@centos7 temp]# seq 10|sed -n '$!N;/\n5/{s/.*\n//p;N;d};P;D'
1
2
3
5
7
8
9
10

2、合并奇偶数行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#输入数据为命令seq 11的输出,要求分别将奇数和偶数分别放在同一行
#输出第一行`1 3 5 7 9 11`,第二行`2 4 6 8 10`
[root@centos7 ~]# seq 11|sed -nr '$!N;2!G;s/([^\n]+)\n((.+)\n)?(.+)\n(.+)/\4 \1\n\5 \3/;h;$p'
1 3 5 7 9 11
2 4 6 8 10 
[root@centos7 ~]# 

3、合并多文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#文本a.txt的内容:
01 12510101 4001
02 12310001 4002
03 12550101 4003
04 12610001 4004
05 12810001 4005
06 12310001 4006
07 12710001 4007
08 12310001 4008
09 12810101 4009
10 12510101 4010
11 12310001 4011
12 12610001 4012
13 12310001 4013
#文本b.txt的内容:
A 12410101 2006/02/15 2009/01/31 4002
B 12310001 2006/08/31 2008/08/29 4001
C 12610001 2008/05/23 2008/05/22 4002
D 12810001 1992/12/10 1993/06/30 4001
E 12660001 1992/05/11 1993/06/01 4005
#要求输出a.txt内容中第二列和b.txt中第二列相同的行,并追加b.txt中对应的两个日期列。
#形如:02 12310001 4002 2006/08/31 2008/08/29
sed -rn '/^[01]/ba;H;:a;G;s/^((..)( .*)( [^\n]+)).*\3(( [^ ]*){2}).*/\1\5/p' b.txt a.txt
#当然如果使用awk来处理的话,解决思路更容易理解一些:
awk 'NR==FNR{a[$2]=$3FS$4;next}{if($2 in a)print $0,a[$2]}' b.txt a.txt

为加深对sed各种命令特性的理解,请自行分析这三个例子。

各种命令的组合使用,再加上正则表达式的强大能力,使得sed可以处理所有能够计算的问题。但由于代码可读性不强,理解起来比较困难,通常使用sed作为一个文本编辑器,对文本做非交互的流式处理。理解上述各个命令的含义,熟练使用它们,就会发现sed的强大之处。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-12-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
sed入门详解教程 原
    sed 是一个比较古老的,功能十分强大的用于文本处理的流编辑器,加上正则表达式的支持,可以进行大量的复杂的文本编辑操作。sed 本身是一个非常复杂的工具,有专门的书籍讲解 sed 的具体用法,但是个人觉得没有必要去学习它的每个细节,那样没有特别大的实际意义。网上也有很多关于 sed 的教程,我也是抱着学习的心态来学习 sed 的常见的用法,并进行系统的总结,内容基本覆盖了 sed 的大部分的知识点。文中的内容比较简练,加以实际示例来帮助去理解 sed 的使用。
拓荒者
2019/03/11
1.5K0
sed入门详解教程
                                                                            原
awk(报告生成器),grep(文本过滤器),sed(流编辑器)使用入门
三剑客 linux下的文本三剑客 grep egrep,grep,fgrep 文本查找的需要 grep:根据模式搜索文本,并将符合模式的文本行显示出来。 pattern:文本符和正则表达式的元字符组合而成的匹配条件 grep [option] "pattern" file grep root /etc/passwd -i:忽略大小写 --color:匹配的字符高亮显示 alias alias grep='grep --color' -v:反向查找 -o:只显示被模式匹配的字符串(不显示行
若与
2018/04/25
1.4K0
awk(报告生成器),grep(文本过滤器),sed(流编辑器)使用入门
【说站】Linux环境sed工具的使用及工作原理
逐行处理文件内容,一次读取一行内容到模式空间处理。由此反复,知道最后一行处理完成。
很酷的站长
2022/11/24
1.3K0
【说站】Linux环境sed工具的使用及工作原理
linux基础命令介绍五:文本过滤 grep
grep按行检索输入的每一行,如果输入行包含模式PATTERN,则输出这一行。这里的PATTERN是正则表达式(参考前一篇,本文将结合grep一同举例)。
用户5030870
2019/04/11
1.6K0
技能篇:sed教程-linux命令
sed 全名为 stream editor,是用于文本处理的流编辑器,支持正则表达式。sed处理文本时是一次处理一行内容
潜行前行
2021/06/25
7460
Linux 命令 | 每日一学,文本处理三剑客之grep命令实践
上一篇,我们学习了Shell脚本编程中的正则表达式【Linux 运维 | 6.从零开始,Shell编程中正则表达式 RegExp 速成指南】, 不知道各位初学的童鞋是否已经初步掌握了呢,接下来我们学习Linux中的文本处理三剑客之一grep命令,grep 命令是Linux系统中常用的文本搜索工具,它可以根据指定的字符串模式或者正则表达式对文件内容每行进行搜索、匹配等操作。
全栈工程师修炼指南
2024/09/29
2070
Linux 命令 | 每日一学,文本处理三剑客之grep命令实践
linux中sed命令总结
原文:https://wangchujiang.com/linux-command/c/sed.html
入门笔记
2022/06/02
3.4K0
LinuxShell命令sed
sed 是 Linux系统自带的流式编辑器(流式编辑器是指处理处理输入流或文本流中的数据),不同于普通的交互式文本编辑器(比如 vim),sed 编辑器根据命令来处理数据流中的数据。
hotarugali
2022/02/28
1.1K0
LinuxShell命令sed
linux基础命令介绍八:文本分析 awk
awk的工作过程是这样的:按行读取输入(标准输入或文件),对于符合模式pattern的行,执行action。当pattern省略时表示匹配任何字符串;当action省略时表示执行'{print}';它们不可以同时省略。 每一行输入,对awk来说都是一条记录(record),awk使用$0来引用当前记录:
用户5030870
2019/04/10
1.5K0
文本处理三剑客之sed
sed 全名为 stream editor,流编辑器,用程序的方式来编辑文本。sed 与vim等编辑器不同,sed 是一种非交互式编辑器(即用户不必参与编辑过程),它使用预先设定好的编辑指令对输入的文本进行编辑,完成之后再输出编辑结构。
用户4877748
2020/07/21
9690
干货!上古神器 sed 教程详解,小白也能看的懂
熟悉 Linux 的同学一定知道大名鼎鼎的 Linux 三剑客,它们是 grep、awk、sed,我们今天要聊的主角就是 sed。
用户3105362
2021/02/04
2.6K0
干货!上古神器 sed 教程详解,小白也能看的懂
Linux三大剑客之sed
版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢。联系本人:ecsboy(微信),136625317(QQ) https://blog.csdn.net/solaraceboy/article/details/79272344
耕耘实录
2018/12/20
8850
Linux学习----文本三剑客——sed(马哥教育原创)
我以前的文章介绍过grep了,今天我就来说一下第二个sed,它是stream editor的缩写。在Linux的文本文件中文本存储都是一行,显示时表现的多行其实都是因为有换行符的存在,例如:文本是:abc$def$ghi 显示出来就是三行了。Sed就是一个行编辑器,它一次读一行文本进行操作,然后根据我们的选择看是否同步到文本之中。还有一个叫awk的,在Linux上叫做gawk(gnu awk),它是一个文本格式化工具,我们下一篇文章再说。 工作机制:每次读取一行文本至“模式空间(pattern space)
Py_lover
2018/08/02
1.5K0
linux基础命令介绍四:文本编辑 vim
其中file可以是一个新文件,也可以是原有文件。这样的命令执行后将打开编辑器,显示文件file的内容。如图所示:
用户5030870
2019/04/11
1.3K0
linux基础命令介绍四:文本编辑 vim
sed的基本用法详解
在Linux的世界中,有着一个文本三剑客的称呼,它们分别代表grep(文本过滤),sed(流编辑器),awk(gawk)(报告生成器)。 它们是强大的文本处理工具,了解并掌握它们,可以让你对文本的处理更加从容和轻松。 今天我们主要是围绕sed来进行分析。 一、初识sed sed:Stream Editor 从名字上也可以直观的了解到它是一个流编辑工具。何为流编辑器?就是把文本中的文字按照特定的分隔方式,进行数据流处理。sed就是基于这种方式,它是以换行符以分隔单位,对文本进行逐行的处理。 ---- 二、
小小科
2018/05/02
2.5K0
sed的基本用法详解
Linux三剑客命令之Sed
sed是一种流编辑器,也是文本处理中非常好的工具,配合正则使用更强大处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲区的内容,完成后输出到屏幕,接着处理下一行
民工哥
2020/09/16
1.5K0
Sed命令的基本使用
该文介绍了sed命令的基本使用,包括打印匹配行、替换匹配行、从文件中读取并写入到输出中等常用用法,以及使用修饰符进行更高级的文本处理。同时还介绍了sed命令的常用选项和例子,以及与其他文本处理工具的对比。
GavinZhou
2018/01/02
1.3K0
linux中最为常用的三大文本(grep,sed,awk)处理工具
Sed is a stream editor. sed全称是:stream editor 流编辑器 对文件的操作无非就是”增删改查“,sed命令就是实现对文件的”增删改查“。
天天Lotay
2022/11/16
6.1K0
linux中最为常用的三大文本(grep,sed,awk)处理工具
详细grep、sed、awk
[root@VM_0_7_centos tmp]# cat 1.txt 1 2 3 4 5 6 [root@VM_0_7_centos tmp]# cat 2.txt 4 5 6 7 8 [root@VM_0_7_centos tmp]# grep -f 1.txt 2.txt 4 5 6 [root@VM_0_7_centos tmp]# grep -f -v 1.txt 2.txt grep: -v: No such file or directory [root@VM_0_7_centos
用户1173509
2018/03/28
1.7K0
详细grep、sed、awk
Linux的文本处理工具浅谈-awk sed grep
日志样子举例如下: http://youku.com 200 http://youku.com 302 http://youku.com 403 http://youku.com 502 http://baidu.com 302 http://baidu.com 404 现想使用awk命令按域名统计 返回码大于等于400的百分比,假如优酷总共有4行,大于等于400的返回码有两行,那占比就为50%
sunsky
2020/08/20
3.6K0
相关推荐
sed入门详解教程 原
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验