Shell 脚本中 sed 命令的常用选项和操作有哪些?

推荐答案

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

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

本题详细解读

1. 常用选项

  • -i: 直接修改文件内容,而不是输出到标准输出。例如,sed -i 's/foo/bar/' file.txt 会将 file.txt 中的 foo 替换为 bar
  • -n: 取消默认输出,仅打印处理过的行。通常与 p 操作一起使用,例如 sed -n '1,5p' file.txt 只打印文件的前五行。
  • -e: 允许多个编辑命令。例如,sed -e 's/foo/bar/' -e 's/baz/qux/' file.txt 会依次执行两个替换操作。
  • -f: 从文件中读取编辑命令。例如,sed -f script.sed file.txt 会从 script.sed 文件中读取命令并应用到 file.txt
  • -r: 使用扩展正则表达式。例如,sed -r 's/(foo|bar)/baz/' file.txt 会使用扩展正则表达式来匹配 foobar 并替换为 baz

2. 常用操作

  • s: 替换操作,格式为 s/old/new/。例如,sed 's/foo/bar/' file.txt 会将 foo 替换为 bar
  • p: 打印匹配的行。例如,sed -n '/foo/p' file.txt 会打印包含 foo 的行。
  • d: 删除匹配的行。例如,sed '/foo/d' file.txt 会删除包含 foo 的行。
  • a: 在匹配行后追加文本。例如,sed '/foo/a\new line' file.txt 会在包含 foo 的行后追加 new line
  • i: 在匹配行前插入文本。例如,sed '/foo/i\new line' file.txt 会在包含 foo 的行前插入 new line
  • c: 替换匹配行。例如,sed '/foo/c\new line' file.txt 会将包含 foo 的行替换为 new line

这些选项和操作是 sed 命令中最常用的部分,掌握它们可以大大提高处理文本文件的效率。

纠错
反馈