sed文本处理
概述
sed [sed] = Stream[striːm] 溪流 EDitor 是一种非交互式的流编辑器,通过多种转换修改流经它的文本。
它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern[ˈpætərn] space[speɪs]),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。
文件内容并没有改变,除非你使用重定向存储输出。
sed可做的编辑工作包括删除、查找替换、添加、插入、从其他文件中读入数据等。
要想保存修改后的文件,必须使用重定向生成新的文件。如果想直接修改源文件本身则需要使用“-i”参数。
使用场景
- 常规编辑器编辑困难的文本。
- 太过于庞大的文本,使用常规编辑器难以胜任(比如说vi一个几百兆的文件)。
- 有规律的文本修改,加快文本处理速度(比如全文替换)。
sed 语法
sed [options] 'command' file
options是sed可以接受的参数
command是sed的命令集(一共有25个)
demo
vim Sed.txt
this is line 1,this is First line
this is line 2,the Second line,Empty line followed
this is line 4,this is Third line
this is line 5,this is Fifth line
sed '1d' Sed.txt
sed '1d' Sed.txt > saved_file
sed -i '1d' saved_file
cat saved_file
sed '1,3d' Sed.txt
sed '3,$d' Sed.txt
sed '$d' Sed.txt
sed '/Empty/d' Sed.txt
sed '/^$/d' Sed.txt
sed 's/line/LINE/' Sed.txt
sed 's/line/LINE/2' Sed.txt
sed 's/line/LINE/g' Sed.txt
sed 's/^this/that/' Sed.txt
sed -e 's/this/That/g' -e 's/line/LINE/g' Sed.txt
sed 's/this/That/g ;s/line/LINE/g' Sed.txt
ip a s ens37 | grep '\<inet\>' | sed 's/^.*inet //' | sed 's/brd.*$//'
sed 'y/1245/ABCD/' Sed.txt
sed '2 i Insert' Sed.txt
sed '2 a Insert' Sed.txt
sed '/Second/i\Insert' Sed.txt
sed '2 a\insert\ninsert2\ninsert3' Sed.txt
sed '2,4 c this is 2-4 line' Sed.txt
sed '/^$/r /etc/passwd' Sed.txt
sed '/the/p' Sed.txt
sed -n '/the/p' Sed.txt
vim sed01.rules
s/this/THAT/g
/^$/d
sed -f sed01.rules Sed.txt
vim sed02.rules
s/this/THAT/g
/^$/d
chmod +x sed02.rules
./sed02.rules Sed.txt