sed
sed
是一个强大的流编辑器(Stream Editor),常用于文本处理、文件编辑和格式化输出等操作。它支持模式匹配、替换、插入、删除和其它复杂的文本操作。
基本语法
sed [选项] '脚本' 文件
选项:
-e
:允许在命令行中添加多个脚本。-i[.suffix]
:就地编辑文件,保存时可创建备份,备份文件后缀为.suffix
。-n
:禁止自动输出,通常和p
(打印)一起使用。-f
:从脚本文件读取sed
命令。--help
/--version
:查看帮助或版本信息。
- 脚本:指定要执行的编辑命令,如替换、删除、打印等。
- 文件:指定目标文件或通过管道输入数据。
常用命令
1. 替换(s)
sed 's/匹配模式/替换内容/修饰符' 文件
示例:
echo "Hello World" | sed 's/World/Everyone/'
输出:
Hello Everyone
修饰符:
/g
:全局替换(每行的所有匹配)。/i
:忽略大小写。/p
:匹配后打印匹配行(通常与-n
一起用)。/n
:仅替换第 n 次出现的匹配项。
示例:
echo "a b c a b c" | sed 's/a/x/g'
输出:
x b c x b c
2. 删除(d)
sed '模式/d' 文件
删除匹配的行。
echo -e "line1\nline2\nline3" | sed '/line2/d'
输出:
line1 line3
3. 打印(p)
sed -n '模式/p' 文件
打印匹配的行。
echo -e "line1\nline2\nline3" | sed -n '/line2/p'
输出:
line2
4. 插入/追加
插入(i):在指定行前插入。
sed '2i\插入内容' 文件
追加(a):在指定行后追加。
sed '2a\追加内容' 文件
5. 替换特定行
sed '2s/匹配模式/替换内容/' 文件
- 只替换第二行的内容。
6. 多命令操作
sed -e '命令1' -e '命令2' 文件
示例:
echo -e "foo\nbar\nbaz" | sed -e 's/foo/FOO/' -e 's/baz/BAZ/'
输出:
FOO
bar
BAZ
7. 保存修改到文件
使用
-i
直接修改文件。
sed -i 's/old/new/g' filename
进阶:地址匹配
1. 按行号匹配
sed '1,3d' 文件 # 删除第 1 到 3 行
2. 按正则匹配
sed '/模式/d' 文件 # 删除匹配模式的所有行
3. 组合匹配
sed '1,3{/模式/d}' 文件 # 删除第 1 到 3 行中匹配模式的行
常见用法汇总
替换所有匹配:
sed 's/foo/bar/g' 文件
注释配置文件:
sed -i 's/^/#/' filename
删除空行:
sed '/^$/d' 文件
删除行首/行尾的空格:
sed 's/^[ \t]*//' 文件 # 删除行首空格 sed 's/[ \t]*$//' 文件 # 删除行尾空格
修改多个文件:
sed -i 's/foo/bar/g' *.txt
sed
是 Linux 中不可或缺的工具,尤其适合处理大量文件或数据流,灵活而高效。
评论 (0)