sed常用参数和使用示例
# 常用参数
-e
: 指定要执行的编辑命令。可以多次使用来指定多个命令。
sed -e 's/foo/bar/' file
-i
: 直接在文件中修改内容(即“就地编辑”)。可以使用备份扩展名来保留原文件。
sed -i.bak 's/foo/bar/' file # 修改文件,并保留原文件的备份
-n
: 禁用自动输出模式空间的内容。通常与 p
(打印)命令配合使用。
sed -n 's/foo/bar/p' file # 只输出替换了内容的行
-f
: 从文件中读取编辑命令,而不是在命令行中指定。
sed -f script.sed file
-r
或 --regexp-extended
: 使用扩展的正则表达式(ERE),支持更复杂的模式匹配。
sed -r 's/(foo|bar)/baz/' file
-e
: 指定要执行的编辑命令。如果你有多个命令,可以使用这个选项多次。
sed -e 's/foo/bar/' -e 's/baz/qux/' file
# 常用命令
s/pattern/replacement/
: 替换匹配pattern
的内容为replacement
。默认只替换每行的第一个匹配项。
sed 's/foo/bar/' file
p
: 打印模式空间中的内容。通常与-n
一起使用以避免自动打印所有行。
sed -n 'p' file # 打印所有行
d
: 删除模式空间中的内容。
sed '/pattern/d' file # 删除匹配 pattern
的行
a\ text
: 在匹配的行之后添加文本。
sed '/pattern/a\New text' file
i\ text
: 在匹配的行之前插入文本。
sed '/pattern/i\New text' file
c\ text
: 用text
替换匹配的行。
sed '/pattern/c\New text' file
g
: 用于全局替换,通常在s
命令中使用,替换每行中的所有匹配项。
sed 's/foo/bar/g' file
# 示例
- 将文件
file.txt
中的所有 "foo" 替换为 "bar" 并保存更改:
sed -i 's/foo/bar/g' file.txt
- 仅打印包含 "foo" 的行:
sed -n '/foo/p' file.txt
- 在每行以 "Hello" 结尾添加 "World":
sed 's/$/ World/' file.txt
- 删除包含 "foo" 的行并保存更改:
sed -i '/foo/d' file.txt
这些是 sed
的一些基本用法。它非常强大,可以处理复杂的文本处理任务。