Linux三板斧之:sed

2023-08-17 09:07:05 浏览数 (3)

sed 是 Linux三板斧之一,是一种非常强大的文本编辑器。它可以对文本文件进行添加、删除、替换、注释等操作。sed 的基本语法是:

代码语言:javascript复制
sed option 'action' filename

这意味着对 filename 文件执行 action 所指定的编辑操作。例如,我们要在 /etc/passwd 文件中将“bash”替换为“zsh”,可以使用:

代码语言:javascript复制
sed 's/bash/zsh/' /etc/passwd

这会输出 passwd 文件的内容,但是将每行中的“bash”替换为“zsh”。

sed的常用选项与动作

sed有许多选项与操作来控制编辑动作:

  • -i: 直接修改文件内容,而不是输出到屏幕
  • -n: 不输出未修改的行,只输出被sed修改过的行
  • a: 在指定行的下一行添加一行或多行文本
  • d: 删除指定行
  • s: 查找并替换,类似于vi中的替换功能
  • y: 将字符翻译成其他字符
  • p: 打印指定行
  • i: 在指定行前插入一行或多行文本
  • c: 替换指定行
  • g: 全局替换,即不止替换每一行的第一个模式匹配
  • #注释

例如:

代码语言:javascript复制
sed -i 's/bash/zsh/' /etc/passwd     # 直接编辑/etc/passwd文件  
sed -n 's/bash/zsh/p' /etc/passwd    # 只输出替换过的行
sed '3ahello' /etc/passwd           # 在第3行后添加"hello"  
sed '3d' /etc/passwd                # 删除第3行   
sed 's/bash/zsh/' /etc/passwd        # 将bash替换为zsh
sed 'y/abc/def/' /etc/passwd         # 将a翻译成d,b翻译成e,c翻译成f
sed -n '10,20p' /etc/passwd          # 只打印第10到20行
sed '2ihello' /etc/passwd            # 在第二行前插入"hello"
sed '3chello' /etc/passwd            # 将第三行替换为"hello"  
sed 's/bash/zsh/g' /etc/passwd        # 全局替换bash为zsh
sed '/^#/d' /etc/passwd              # 删除所有注释行

sed 是一个功能强大的文本编辑器,熟练掌握各种选项与动作,几乎可以实现任何常见的文本编辑操作。结合正则表达式,sed 可以轻松编辑复杂的文本文件。sed 常用于批量修改文件内容、过滤与格式化文本等。使用 sed 编辑过的文件,内容和格式看上去就像手工编辑过的一样,这使得 sed 成为自动化文本处理不可多得的工具。

总之,sed 是 Linux 环境下必不可少的命令之一。掌握 sed 可以极大提高工作效率,并使许多日常的文本编辑工作自动化。

0 人点赞