Linux系统中,利用sed命令删除文档空格的方法汇总
1. 删除行首的空格
- 命令:
sed -i 's/^[[:space:]]*//' filename
- 作用: 移除每行开头所有空白字符(包括空格和制表符),不改变行尾或行中内容。
- 示例效果:
- 原始行:
Hello World
→ 修改后:Hello World
- 原始行:
- 说明:
^[[:space:]]*
正则匹配行首的零个或多个空白字符,//
表示替换为空。
2. 删除行尾的空格
- 命令:
sed -i 's/[[:space:]]*$//' filename
- 作用: 移除每行末尾所有空白字符,保留行首和行中内容。
- 示例效果:
- 原始行:
Hello World
→ 修改后:Hello World
- 原始行:
- 说明:
[[:space:]]*$
正则匹配行尾的零个或多个空白字符。
3. 删除所有空格(行首、行中、行尾)
- 命令:
sed -i 's/[[:space:]]//g' filename
- 作用: 彻底删除全行所有空白字符(包括空格、制表符等),使文本紧凑拼接。
- 示例效果:
- 原始行:
Hello World
→ 修改后:HelloWorld
- 原始行:
- 警告: 此操作会移除所有空格,可能破坏文本格式(如单词间无分隔),请谨慎使用。
4. 其他相关操作
- 删除行首和行尾空格(不改变行中):
结合上述命令:sed -i 's/^[[:space:]]*//; s/[[:space:]]*$//' filename
- 合并多个连续空格为一个空格:
sed -i 's/[[:space:]]\{1,\}/ /g' filename
- 作用: 将多个连续空白符(如两个空格或制表符)替换为单个空格,保持文本可读性。
5. 注意事项
- 测试命令: 避免直接修改原文件时,先省略
-i
选项运行命令(如sed 's/^[[:space:]]*//' filename
),输出到终端验证。 - 空白字符类型:
[[:space:]]
匹配标准空白集(包括空格、制表符\t
等),比单纯 更安全。 - 文件处理: 替换
filename
为实际文件名(如input.txt
),适用于 Linux 或 macOS 系统。