本文主要是介绍【linux】(6)文本处理sed,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
sed
(stream editor)是可以根据指定的脚本对输入文本进行编辑、替换、删除等操作。
基本用法
sed [options] 'script' [file...]
常用选项
-
-n
:抑制默认输出。通常sed
会打印每一行,通过-n
选项可以只打印被脚本处理的行。sed -n 'p' filename
-
-e
:允许多脚本处理。可以指定多个-e
选项来处理文本。sed -e 'script1' -e 'script2' filename
-
-f
:从文件中读取脚本。sed -f script.sed filename
-
-i
:直接编辑文件而不是输出到标准输出。sed -i 's/old/new/' filename
-
-r
:使用扩展正则表达式(ERE)。sed -r 's/regex/replacement/' filename
-
-E
:同-r
,使用扩展正则表达式(兼容性选项)。sed -E 's/regex/replacement/' filename
基本操作
替换
-
替换字符串
sed 's/old/new/' filename
例子:将文件
example.txt
中的所有hello
替换为world
。sed 's/hello/world/' example.txt
-
全局替换
sed 's/old/new/g' filename
例子:将文件
example.txt
中的所有hello
替换为world
,包括每行中出现的所有hello
。sed 's/hello/world/g' example.txt
-
指定替换某一行
sed '2s/old/new/' filename
例子:将文件
example.txt
中第二行的hello
替换为world
。sed '2s/hello/world/' example.txt
-
替换第 N 次出现的匹配项
sed 's/old/new/3' filename
例子:将文件
example.txt
中每行第 3 个hello
替换为world
。sed 's/hello/world/3' example.txt
删除
-
删除某一行
sed 'Nd' filename
例子:删除文件
example.txt
中的第 2 行。sed '2d' example.txt
-
删除匹配的行
sed '/pattern/d' filename
例子:删除文件
example.txt
中包含hello
的行。sed '/hello/d' example.txt
-
删除从第 M 行到第 N 行
sed 'M,Nd' filename
例子:删除文件
example.txt
中第 2 到第 4 行。sed '2,4d' example.txt
插入和追加
-
在某一行前插入文本
sed 'N i\text' filename
例子:在文件
example.txt
中的第 2 行前插入hello world
。sed '2i\hello world' example.txt
-
在某一行后追加文本
sed 'N a\text' filename
例子:在文件
example.txt
中的第 2 行后追加hello world
。sed '2a\hello world' example.txt
替换指定范围内的文本
-
替换从第 M 行到第 N 行的文本
sed 'M,Ns/old/new/' filename
例子:将文件
example.txt
中第 2 行到第 4 行的hello
替换为world
。sed '2,4s/hello/world/' example.txt
高级用法
使用正则表达式
-
替换包含正则表达式模式的文本
sed 's/regex/replacement/' filename
例子:将文件
example.txt
中所有以h
开头的单词替换为world
。sed 's/\bh\w*/world/g' example.txt
处理多行文本
-
在每行末尾添加文本
sed 's/$/text/' filename
例子:在文件
example.txt
中每行末尾添加world
。sed 's/$/ world/' example.txt
-
在每行开头添加文本
sed 's/^/text/' filename
例子:在文件
example.txt
中每行开头添加hello
。sed 's/^/hello /' example.txt
多个脚本命令
-
使用多个
-e
选项sed -e 'command1' -e 'command2' filename
例子:在文件
example.txt
中将hello
替换为hi
,然后将world
替换为everyone
。sed -e 's/hello/hi/' -e 's/world/everyone/' example.txt
-
从文件读取脚本
sed -f script.sed filename
script.sed
文件内容:s/hello/hi/ s/world/everyone/
使用
sed
命令执行脚本:sed -f script.sed example.txt
结合其他命令
-
与
grep
结合使用grep 'pattern' filename | sed 's/old/new/'
-
与
awk
结合使用awk '{print $1}' filename | sed 's/old/new/'
这篇关于【linux】(6)文本处理sed的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!