总结linux中sed命令的使用方法

总结linux中sed命令的使用方法

linux之sed命令:

1 初识sed

sed编辑器被称作流编辑器,它和vim这种的交互式文本编辑器不同,是根据命令来处理数据流中的数据。会执行下列操作:

一次从输入中读取一行数据(重复该操作直到全部行被读取完)

根据编辑器命令匹配数据

按照命令修改数据流中的数据

将新数据输出到STDOUT(标准输出)

其中sed命令的可以从命令行中输入,也可以从一个命令文件中读取。

sed -e script 添加script中指定的命令sed -f file 添加file中指定的命令

登录后复制

1.1 在命令行定义sed命令【推荐学习:linux视频教程】

来看一个简单的文本替换示例:

echo "hi,my name is xxx" | sed 's/xxx/kinsomy/'#修改文件sed 's/xxx/kinsomy/' data.txt#执行多个命令 用-e选项,分号隔开sed 's/xxx/kinsomy/; s/***/hhh/' data.txt

登录后复制

将echo输出的数据通过管道输入sed中,然后用s命令进行替换,用第二个斜杠后的数据替换掉第一个斜杠后匹配的数据。

注意:sed操作文本文件中的数据,仅仅是将修改的数据输出到STDOUT,但是并不会修改文件本身的数据

1.2 从文件读取命令

在一个文件script.sed中定义一系列的命令,方便复用。

s/*/as/x/bs/-/+

登录后复制

# -f选项指定命令文件sed -f script.sed data.txt

登录后复制

2 sed基础

2.1替换标记

上面的例子echo “hi,my name is xxx” | sed ‘s/xxx/kinsomy/’只会替换每一行中匹配到的第一个数据,但是一行数据中若有多个匹配项,则不能全部被替换掉。

echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/'#输出hi,my name is kinsomy, i am xxx

登录后复制

这个时候可以使用一些替换标记substitution flag来设置替换的模式。替换标记跟在替换字符串之后。

s/pattern/replacement/flags

登录后复制

数字,表示将替换掉第几处被匹配到的数据

echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/2'#输出 第二个xxx被替换成kinsomyhi,my name is xxx, i am kinsomy

登录后复制

g,表示替换所有匹配到的数据

echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/g'#输出 第二个xxx被替换成kinsomyhi,my name is kinsomy, i am kinsomy

登录后复制

p,表示会打印出被匹配出来的行

echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/p'#输出hi,my name is kinsomy, i am xxxhi,my name is kinsomy, i am xxx

登录后复制

w,将替换后输出保存到指定文件echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/w output.txt'

登录后复制

2.3 行寻址

上文说到sed命令是一行行读取文本,进行匹配操作数据,知道所有行被遍历完,如果这时候我们想要对特定的行做操作就要使用行寻址。 行寻址有两种形式:

数字形式表示行

# 操作单行$ sed '2s/xxx/***/' data.txt# 操作一定行区间[2,4]$ sed '2,4s/xxx/***/' data.txt# 操作某行开始到最后[2,endline]$ sed '2,$s/xxx/***/' data.txt

登录后复制

文本模式过滤器

首先在/etc/passwd内找到kinsomy的记录,然后将bash替换为csh。文本模式过滤器配合正则表达式会很强大。

sed '/kinsomy/s/bash/csh/' /etc/passwd

登录后复制

2.4 删除行

使用删除命令d对文本进行删除操作。

# 删除所有文本sed 'd' data.txt# 删除单行sed '2d' data.txt# 删除行区间[2,3]sed '2,3d' data.txt# 删除行区间[2,endline]sed '2,$d' data.txt# 删除匹配文本aa的行sed '/aa/d' data.txt# 删除两个匹配文本之间的文本 匹配到1和3的行之间的文本全部被删除sed '/1/,/3/d' data.txt

登录后复制

2.5 插入、附加文本

插入命令i在指定行前增加新行

附加命令a在指定行后增加新行

# 追加echo "Line 2" | sed 'a\pipe quote> Line 1'#插入echo "Line 2" | sed 'i\pipe quote> Line 1'

登录后复制

2.6 修改行

c命令用来修改一行数据

# 修改第三行文本sed '3c\pipe quote> change line ' data.txt

登录后复制

2.7 转换命令

命令格式 sed ‘y/inchar/outchar’

将inchar中的字符一一对应地转换成outchar的字符

echo "This 1 is a test of 1 try." | sed 'y/123/456/'# 输出This 4 is a test of 4 try.

登录后复制

以上就是总结linux中sed命令的使用方法的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/3164824.html

(0)
上一篇 2025年3月30日 11:43:38
下一篇 2025年3月11日 22:01:49

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Linux上如何安装并搭建Nginx服务器

    1.将nginx的压缩包nginx-1.8.0.tar.gz上传到linux服务器 2.由于nginx是c语言开发的并且我们这里是通过编译nginx的源码来安装nginx,所以linux上要安装c语言的编译环境gcc,如果已经安装此步可以省…

    编程技术 2025年3月30日
    100
  • Linux文件及磁盘常用命令有哪些

    #查看文件信息:lsls是英文单词list的简写,其功能为列出目录的内容,是用户最常用的命令之一,它类似于DOS下的dir命令;linux文件或者目录名称最长可以有265个字符,”.”代表当前目录,‘..’代表上一级目录,以‘.’开头的文件…

    2025年3月30日
    100
  • Linux grep命令的语法是什么

    Linux grep 命令用于查找文件里符合条件的字符串。 grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予…

    编程技术 2025年3月30日
    100
  • linux的sed命令如何使用

    一、sed介绍 sed全称(stream editor)流式编辑器,Sed主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等,工作流程如下 1、sed概述 >sed 是一种在线的、非交互式的编辑器,它一次处理一行内容…

    编程技术 2025年3月30日
    100
  • Linux如何查找文件

    Linux查找文件的方法:1、使用find命令,可根据文件的属性进行查找,如文件名、文件大小、所有者、所属组、是否为空、访问时间、修改时间等。2、使用locate命令,配合数据库查看文件位置。Whereis command can only…

    编程技术 2025年3月30日
    100
  • Linux grep命令有什么作用

    Linux grep 命令用于查找文件里符合条件的字符串。 grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予…

    编程技术 2025年3月30日
    100
  • linux中的特殊字符及含义是什么

    linux的特殊字符:1、“#”注释字符;2、“~”,代表用户的home目录;3、“;”,是担任“连续指令”功能的符号;4、“/”,路径目录分隔符;5、“\”,转义符;6、“|”,管道符;7、“.”,代表当前目录;8、“..”,代表父目录,…

    2025年3月30日 编程技术
    100
  • linux命令删除指定字符串

    Linux 命令删除指定字符串:sed ‘s/字符串/替换字符串/g’ 文件名使用 sed 命令流编辑器。’s/字符串/替换字符串/g’:搜索并替换字符串,/g 表示全局替换。文件名:要编辑的…

    2025年3月30日
    100
  • linux怎么删除字母

    在 Linux 系统中删除文本中的字母可以通过两种方法:命令行工具(sed 或 tr)或文本编辑器。命令行工具使用正则表达式或特定字符集删除字母。文本编辑器可以使用正则表达式或逐字符替换字母。 如何删除 Linux 中的字母 引言在 Lin…

    2025年3月30日
    100
  • notepad++的作用是什么

    Notepad++ 是一款免费的文本编辑器,主要用于编程、网页开发和数据分析等文本处理任务。其作用包括:语法高亮,识别不同语言代码结构和错误;代码自动完成,提高编码效率和准确性;支持自定义宏和插件,满足特定需求;多文档界面,实现多任务处理;…

    2025年3月30日
    100

发表回复

登录后才能评论