sed
是一种强大的流编辑器,用于对文本进行基本的文本转换和处理。以下是 sed
的详细用法和一些常见的示例:
基本语法
sed [选项] '命令' 文件名
常用选项
-
-e
:直接在命令行模式上进行sed操作 -
-f
:将sed的操作写入文件 -
-i
:直接修改读取的文件内容,而不是输出到终端 -
-n
:仅显示sed处理过的行
基本命令
-
替换
sed 's/旧文本/新文本/' 文件名
例子:将
example.txt
中的 "apple" 替换为 "orange":sed 's/apple/orange/' example.txt
-
全局替换
sed 's/旧文本/新文本/g' 文件名
例子:将
example.txt
中所有的 "apple" 替换为 "orange":sed 's/apple/orange/g' example.txt
-
在特定行进行替换
sed '行号s/旧文本/新文本/' 文件名
例子:将
example.txt
中第3行的 "apple" 替换为 "orange":sed '3s/apple/orange/' example.txt
-
删除行
sed '行号d' 文件名
例子:删除
example.txt
中的第2行:sed '2d' example.txt
-
删除匹配模式的行
sed '/模式/d' 文件名
例子:删除
example.txt
中包含 "apple" 的行:sed '/apple/d' example.txt
-
插入行
sed '行号i\插入文本' 文件名
例子:在
example.txt
的第2行前插入 "Hello World":sed '2i\Hello World' example.txt
-
追加行
sed '行号a\追加文本' 文件名
例子:在
example.txt
的第2行后追加 "Hello World":sed '2a\Hello World' example.txt
-
替换特定行范围内的文本
sed '起始行号,结束行号s/旧文本/新文本/g' 文件名
例子:将
example.txt
中第2到第4行的 "apple" 替换为 "orange":sed '2,4s/apple/orange/g' example.txt
-
读取并插入文件内容
sed '/模式/r 文件名' 文件名
例子:在
example.txt
中匹配到 "pattern" 的行后插入insert.txt
的内容:sed '/pattern/r insert.txt' example.txt
-
使用正则表达式匹配
sed -E 's/正则表达式/新文本/' 文件名
例子:将
example.txt
中以 "a" 开头,后跟任意字符,然后是 "e" 的部分替换为 "new":sed -E 's/a.*e/new/' example.txt
实例操作
-
删除所有空行:
sed '/^$/d' example.txt
-
在每行前添加行号:
sed '=' example.txt | sed 'N;s/\n/\t/'
-
只替换文件中的第一个匹配:
sed '0,/旧文本/s//新文本/' 文件名
例子:在
example.txt
中只替换第一次出现的 "apple" 为 "orange":sed '0,/apple/s//orange/' example.txt
-
交换文件中的两行:
sed -e '行号1h' -e '行号1d' -e '行号2G' 文件名
例子:交换
example.txt
中的第1行和第2行:sed -e '1h' -e '1d' -e '2G' example.txt
sed
是一个功能强大的工具,适用于多种文本处理任务。通过掌握 sed
的各种命令和选项,用户可以高效地进行文本编辑和转换。