shell sed命令

这篇具有很好参考价值的文章主要介绍了shell sed命令。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


sed 命令

sed 编辑器

  • sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。
  • sed编辑器可以根据命令来处理数据流中的数据,这些命令要么从命令行中输入,要么存储在一个命令文本文件中。

sed 的工作流程的三个过程

  • 读取:sed 从输入流(文件、管道、标准输入)中读取一行内容并存储到临时的缓冲区中(又称模式空间,pattern space)。
  • 执行:默认情况下,所有的sed 命令都在模式空间中顺序地执行,除非指定了行的地址,否则sed 命令 将会在所有的行上依次执行。
  • 显示:发送修改后的内容到输出流。在发送数据后,模式空间将会被清空。在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完。

在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完。

注意:默认情况下所有的sed命令都是在模式空间内执行的,因此输入的文件并不会发生任何变化,除非是用重定向存储输出。

命定格式

sed -e '操作' 文件1 文件2 ...
sed -n -e '操作' 文件1 文件2 ...
sed -f 脚本文件 文件1 文件2 ...
sed -i -e '操作' 文件1 文件2 ...


sed -e 'n{
操作1
操作2
...
}' 文件1 文件2 ...

常用选项

-e 或--expression=:表示用指定命令来处理输入的文本文件,只有一个操作命令时可省略,一般在执行多个操作命令使用
-f 或--file=:表示用指定的脚本文件来处理输入的文本文件。
-h 或--help:显示帮助。
-n --quiet 或 silent:禁止sed编辑器输出,但可以与p命令一起使用完成输出。
-i 直接修改目标文本文件。

常用操作

s:      替换,替换指定字符。
d:      删除,删除选定的行。
a:      增加,在当前行下面增加一行指定内容。
i:      插入,在选定行上面插入一行指定内容。
c:      替换,将选定行替换为指定内容。
y:      字符转换,转换前后的字符长度必须相同。
p:      打印,如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容;如果有非打印字符,则以 ASCII 码输出。其通常与“-n”选项一起使用。
=:      打印行号。
l:      打印数据流中的文本和不可打印的ASCII字符(比如结束符$、制表符\t)

实验操作

打印内容

  1. sed -n -e ‘p’

shell sed命令

  1. sed -n -e ‘=’

shell sed命令

  1. sed -n -e ‘l’

shell sed命令

4.sed -n -e ‘=;p’

shell sed命令

5.sed -n -e ‘=’ -e ‘p’

shell sed命令

  1. sed -n ’
    =
    p
    ’ test

shell sed命令

使用地址

sed编辑器有2种寻址方式

  • 1、以数字形式表示行区间
  • 2、用文本模式来过滤出行

shell sed命令

1.sed -n ‘1p’

shell sed命令

2.sed -n ‘$p’

shell sed命令

  1. sed -n ‘1,3p’

shell sed命令

4.sed -n ‘3,$p’

shell sed命令

5.sed -n ‘1,+3p’                         #打印1之后的连续3行,即1-4行

shell sed命令

6.sed ‘5q’                                  #打印前5行信息后退出,q表示退出

shell sed命令

7.sed -n ‘p;n’                            #打印奇数行;n表示移动到下一行

shell sed命令

  1. sed -n ‘n;p’                          #打印偶数行

shell sed命令

  1. sed -n ‘2,${n;p}’

shell sed命令

10.sed -n ‘/user/p’ /etc/passwd

shell sed命令

11.sed -n ‘/^a/p’ /etc/passwd

shell sed命令

12.sed -n ‘/bash$/p’ /etc/passwd

shell sed命令

13.sed -n ‘/ftp|root/p’ /etc/passwd

shell sed命令

14.sed -n ‘2,/nobody/p’ /etc/passwd

shell sed命令

15.sed -n ‘2,/nobody/=’ /etc/passwd

shell sed命令

16.sed -nr ‘/ro{1,}t/p’ /etc/passwd

shell sed命令

删除行

  1. sed ‘d’ #全删

2.sed ‘3d’

shell sed命令

3.sed ‘2,4d’

shell sed命令

4.sed ‘$d’

shell sed命令

5.sed ‘/^$/d’

shell sed命令

6.sed ‘/nologin$/d’ /etc/passwd

shell sed命令

7.sed ‘/nologin$/!d’ /etc/passwd
shell sed命令
8. sed ‘/2/,/3/d’

shell sed命令

  1. sed ‘/1/,/3/d’

shell sed命令

替换

行范围 s/旧字符串/新字符串/替换标记

4种替换标记文章来源地址https://www.toymoban.com/news/detail-458078.html

数字:表明新字符串将替换第几处匹配的地方
g:表明新字符串将会替换所有匹配的地方
p:打印与替换命令匹配的行,与-n一起使用
w 文件:将替换的结果写到文件中
sed -n 's/root/admin/p' /etc/passwd

sed -n 's/root/admin/2p' /etc/passwd

sed -n 's/root/admin/gp' /etc/passwd

sed 's/root//g' /etc/passwd

sed '1,20 s/^/#/' /etc/passwd

sed '/^root/ s/$/#/' /etc/passwd

sed '/root/ s/^/#/' /etc/passwd
sed -rn 's/.*root.*/#&/p' /etc/passwd

sed -f script.sed testfile2

sed '1,20w out.txt' /etc/passwd
sed '1,20 s/^/#/w out.txt' /etc/passwd

sed -n 's/\/bin\/bash/\/bin\/csh/p' /etc/passwd
sed -n 's!/bin/bash!/bin/csh!p' /etc/passwd		#使用“!”作为字符串分隔符
sed -i 's9\945\9\99\98\939g' test.txt		#将94599替换为9893

插入

sed '/45/c ABC' testfile2

sed 'y/145/ABC/' testfile2   #使所有的1字符转换成A,所有的2字符转换成B,所有的3字符转换成C

sed '1,3a ABC' testfile2

sed '1i ABC' testfile2

sed '5r /etc/resolv.conf' testfile2

sed '/root/{H;d};$G' /etc/passwd	#将包含root的行剪切到末尾,H表示复制到剪切板,G表示粘贴到指定行后

sed '1,2H;3,4G' /etc/passwd			#将12行复制到34行的下面

echo "111222333" | sed -r 's/(111)(222)/\2\1/'	#将字符 111222 互换位置
echo "111222333" | sed -r 's/^(.)(.*)(.)$/\3\2\1/'		#将第一个字符和最后一个字符互换

到了这里,关于shell sed命令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java实现连接远程服务器,并可以执行shell命令

    你可以使用Java中的SSH库来连接远程服务器并执行shell命令。下面是一个简单的示例代码: 请注意替换 your_host , your_username , your_password 和 your_shell_command 为实际的远程服务器信息和要执行的shell命令。该示例代码使用JSch库来建立SSH连接并执行命令。

    2024年01月20日
    浏览(51)
  • 命令提示符(CMD)切换到指定目录的方法

    通常我们把像是java,mysql,python等语言类工具放到自定义目录,而不是默认路径,使用cmd命令提示符想查看版本信息的时候需要到指定目录,这时候就需要掌握切换到指定目录的方法。 命令提示符(cmd)只在当前盘符切换目录时,可以先到目标目录上复制地址, 输入 即可切

    2024年02月11日
    浏览(36)
  • 潇洒郎: shell sed 学习

    当我们在进行自动化shell脚本编辑的时候,有时候需要进行编辑或者修改相应的配置文件。那么sed是一个很不错的选择。sed是Linux下一款功能强大的非交互流式文本编辑器。对文本文件进行增. 删. 改. 查等操作,支持按行. 按字段. 按正则匹配文本内容,灵活方便,适合大文件

    2024年02月09日
    浏览(25)
  • Linux如何将一个目录移动到另一个目录去,Linux 中,可以使用 mv 命令将一个目录移动到另一个目录中。

    在 Linux 中,可以使用 mv 命令将一个目录移动到另一个目录中。 命令格式如下: 其中,选项包括: -f :覆盖目标文件(不提示)。 -i :询问是否覆盖目标文件。 -n :不覆盖任何已存在的目标文件。 -v :显示移动的详细过程。 例如,将目录 /home/user1/documents 移动到 /home/use

    2024年02月08日
    浏览(70)
  • Shell脚本基础( 四: sed编辑器)

    目录 1 简介 1.1 sed编辑器的工作流程 2 sed 2.1 基本用法  2.2 sed基本格式 2.2.1 sed支持正则表达式 2.2.2 匹配正则表达式 2.2.3 奇数偶数表示 2.2.4 -d选项删除 2.2.5 -i修改文件内容 2.2.6  -a 追加 2.3 搜索替代 2.4 变量 sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供

    2024年02月12日
    浏览(32)
  • 终端(命令提示符或Windows PowerShell或Azure Cloud Shell)概述

    终端(命令提示符或Windows PowerShell或Azure Cloud Shell)是一种很 不 好用的东西 就是要背,很 不 爽 Windows 终端是一个新式主机应用程序,它面向你喜爱的命令行 shell,如命令提示符、PowerShell 和 bash(通过适用于 Linux 的 Windows 子系统 (WSL))。 它的主要功能包括多个选项卡、窗格

    2024年01月23日
    浏览(33)
  • Shell编程基础(十五)文本三剑客(sed)

    sed提供了一种免交互的方式修改文件内容。 它是一行一行处理,可以通过正则匹配要修改的部分 基本语法 sed [-opt] command files(多个文件 空格隔开) sed 使用扩展正则,不加r不能完全匹配扩展正则表达式 sed -r “正则匹配数据行/指定行号 sed命令” files sed 修改内容写回文件 默认

    2024年02月13日
    浏览(32)
  • 【LinuxShell】Shell编程之sed与awk

      sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。   sed编辑器可以根据命令来处理数据流中的数据,这些命令要么从命令行中输入,要么存储一个命令文本文件中。   sed 的工作流程主要包括 读取 、 执行 和 显示 三个过

    2024年02月04日
    浏览(26)
  • Windows 可以使用以下快捷键打开终端(命令提示符)

    Windows 可以使用以下快捷键打开终端(命令提示符) 使用快捷键 Win + R 打开 “运行” 对话框,然后输入 “cmd” 并按下 Enter 键。这将打开默认的命令提示符窗口。 使用快捷键 Ctrl + Shift + Esc 打开任务管理器,然后在 “文件” 菜单中选择 “运行新任务”。在弹出的对话框中

    2024年02月07日
    浏览(47)
  • shell脚本——循环语句、sed、函数、数组、免交互expect

    目录 循环语句 for while 与 until sed 基本用法 sed脚本格式 函数 注意事项 定义函数和调用函数 脚本中函数的位置 查看函数 删除函数 函数返回值 函数的传参操作 使用函数文件 递归函数  数组 声明数组 数组切片 免交互expect 定义  基本命令 for循环需要知道循环的次数 格式1:

    2024年02月11日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包