您的位置:

sed匹配详解

sed是一种流编辑器,可以自动编辑文本文件。sed工具适用于对文本文件进行编辑、删除、查找、替换、插入等操作。在Linux的世界里,它是非常常用的命令。sed命令的强大功能主要依仗于它的5个元字符和正则表达式的使用。在本文中,我们将从多个方面对sed匹配做详细的阐述。

一、sed匹配日期

在文本文件中,经常会遇到需要匹配日期的情况。sed可以根据正则表达式匹配特定的日期格式。

# 匹配以2022-05-31日期格式开头的行
sed -n '/^2022-05-31/p' file.txt

上面的命令中,“-n”表示不输出默认输出的所有内容,“/^2022-05-31/”表示以2022-05-31为开头的行,“p”表示打印符合条件的行。

二、sed匹配内容

在文本文件中,经常需要匹配特定的字符串。sed命令可以根据字符串匹配相应的内容。

# 匹配含有“example”关键词的行
sed -n '/example/p' file.txt

上面的命令中,“/example/”表示匹配包含“example”关键词的行,“p”表示打印符合条件的行。

三、sed匹配方括号

在文本文件中,方括号通常可以表示范围或特定集合。sed可以通过方括号匹配相应的内容。

# 匹配包含[a,f,u]集合的行
sed -n '/[afu]/p' file.txt

上面的命令中,“/[afu]/”表示匹配包含[a,f,u]集合的行,“p”表示打印符合条件的行。

四、sed匹配特定结尾

在文本文件中,经常需要匹配特定的结尾。sed命令可以根据特定的结尾匹配相应的内容。

# 匹配以jpg结尾的行
sed -n '/\.jpg$/p' file.txt

上面的命令中,“/\.jpg$/”表示匹配以jpg结尾的行,“p”表示打印符合条件的行。

五、sed匹配取反

在文本文件中,有时需要匹配不符合特定条件的内容。sed命令可以通过“!”符号实现匹配取反。

# 匹配不含有“example”关键词的行
sed -n '/example/!p' file.txt

上面的命令中,“/example/!”表示匹配不包含“example”关键词的行,“p”表示打印符合条件的行。

六、sed匹配正则替换

在文本文件中,有时需要替换特定的字符串。sed命令可以根据正则表达式进行替换。

# 替换含有“example”关键词的行为“replace”字符串
sed 's/example/replace/g' file.txt

上面的命令中,“s/example/replace/g”表示将含有“example”关键词的行的“example”替换为“replace”,“g”表示全局替换。

七、sed匹配空行

在文本文件中,有时需要匹配空行。sed命令可以根据特定条件匹配相应的内容。

# 匹配空行
sed -n '/^$/p' file.txt

上面的命令中,“/^$/”表示匹配空行,“p”表示打印符合条件的行。

八、sed匹配内变量

在sed命令中,内变量可以方便的反复使用。将变量保存在内存中,可以通过“&”符号进行引用。

# 将b替换为a,c替换为b,d替换为c
echo "bcd" | sed 's/b/a/g;s/c/b/g;s/d/c/g'

上面的命令中,“s/b/a/g”表示将b替换为a,“s/c/b/g”表示将c替换为b,“s/d/c/g”表示将d替换为c。

九、sed匹配行替换

在文本文件中,有时需要替换特定行的内容。sed命令可以根据行数进行匹配。

# 将第2行替换为“Hello World!”字符串
sed '2c\Hello World!' file.txt

上面的命令中,“2c\Hello World!”表示将第2行替换为“Hello World!”字符串。

十、sed匹配任意字符选取

在文本文件中,有时需要匹配任意字符。sed命令可以通过“.”符号进行匹配。

# 匹配包含任意字符的行
sed -n '/./p' file.txt

上面的命令中,“/./”表示匹配包含任意字符的行,“p”表示打印符合条件的行。