sed
(Stream Editor)是一个强大的流编辑器,主要用于对输入流(如文件或管道输入)进行文本行的模式查找、替换和过滤等操作。下面是一些基本的sed
用法示例和说明:
基本语法:
sed [options] commands inputFile
options
:可选的命令行选项,例如:-i
:直接编辑原文件而非输出到标准输出(默认情况下,sed不会修改原文件)。-e
:允许在命令行后面直接给出一个或多个编辑命令。-f scriptfile
:从指定文件中读取编辑命令。-n
:静默模式,仅打印经过命令修改的行。
commands
:编辑命令,可以是单个命令,也可以是一系列命令,每个命令通常由地址范围(可选)和一个操作组成。
常见操作命令:
替换操作:
# 将每一行出现的old_text替换为new_text
sed 's/old_text/new_text/g' inputFile
# 只替换每行的第一个old_text
sed 's/old_text/new_text/' inputFile
# 使用正则表达式进行替换
sed 's/\([0-9]\+\) year/\1 years/g' inputFile
删除操作:
# 删除第n行
sed 'nd' inputFile
# 删除匹配pattern的所有行
sed '/pattern/d' inputFile
# 删除空白行
sed '/^$/d' inputFile
插入操作:
# 在第n行后插入文本
sed 'n a\Text to insert after line n' inputFile
# 在文件开头插入文本
sed '1i\Text to insert at beginning of file' inputFile
复制与打印操作:
# 打印匹配pattern的行
sed '/pattern/p' inputFile
# 不打印所有行,仅打印匹配pattern的行(类似于grep)
sed -n '/pattern/p' inputFile
# 把匹配pattern的行复制并追加到文件末尾
sed '/pattern/{p;G}' inputFile
示例:
删除文件中的特定行:
sed '/unwanted_line/d' inputFile
替换单词:
sed 's/apple/orange/g' inputFile # 将apple替换成orange
使用地址范围:
sed '5,10s/foo/bar/g' inputFile # 在第5行到第10行之间将foo替换成bar
修改文件并保存:
sed -i 's/original/replacement/g' inputFile # 直接在原文件上替换内容
以上仅为sed
命令的部分基础功能,其强大之处在于可以组合使用各种复杂的命令和正则表达式来处理文本。