基本用法:
sed + 选项 + "指令" 文件
常用选项:
-e --它告诉sed将下一个参数解释为一个sed指令,只有当命令行上给出多个sed指令时使用
-f --后跟保存了sed指令的文件
-i --直接对内容进行修改,不加 i 时默认只是预览,不会对文件进行实际修改
-n --取消默认输出,sed默认会输出所有文本内容,使用 -n 参数后只显示处理过的行
编辑命令:
a --追加,向匹配行后插入内容
c --更改,更改匹配行的内容
i --插入,向匹配行前插入内容
d --删除,删除匹配的内容
s --替换,替换匹配到的内容
p --打印,打印匹配到的内容,通常与 -n 和用
= --用来打印被匹配到的行的行号
n --读取下一行,遇到n时会自动跳入下一行
r,w --读和写,r用于将内容读入文件,w用于将匹配内容写入到文件
实例:
sed -i "1ahello" 1.txt --在第一行后面添加 “hello”,并保存修改
sed -i "/ab/ahello" 1.txt --在内容ab后面添加 “hello”,并保存修改
sed "$ahello" 1.txt --在最后一行添加 “hello”,可直接预览
sed -i "2ihello" 1.txt --在第二行之前插入 “hello”
sed -i "/ab/ihello" 1.txt --在包含“ab”的行之前插入“hello”,如果有多行,则每一行之前都会添加
sed -i "2chello" 1.txt --将文件的第二行替换为“hello”
sed -i "/ab/chello" 1.txt --将包含"ab"的行替换成“hello”
sed ‘1d’ 1.txt --删除第一行
sed '1~2d' 1.txt --从第一行开始删除,每隔两行就删除一行,即删除奇数行
sed '1,2d' 1.txt --删除掉1~2行
sed ‘1,2!d’ 1.txt --删除1~2之外的所有行
sed '$d' 1.txt --删除掉最后一行
sed '/ab/d' 1.txt --删除匹配“ab”的行
sed ‘/ab/,$d’ 1.txt --删除从匹配“ab”的行到最后一行
sed ‘/ab/,+1d’ 1.txt --删除从匹配“ab”的行及后面一行
sed ‘/^$/d’ 1.txt --删除空行
sed '/ab\|12/!d' 1.txt --删除不匹配12或ab的行,/ab\|12/表示匹配12或ab,!表示取反
sed '1,3{/ab/d}' 1.txt --删除1~3行中,匹配内容‘ab的行
sed 's/12/hello' 1.txt --将文中的’12‘替换成’hello‘,默认只替换每行第一个’12‘
sed ’s/12/hello/g‘ 1.txt --将文中的所有’12‘都替换成’hello‘
sed 's/12/hello/2' 1.txt --将每行中第二个匹配的’12‘替换成’hello‘
sed -n 's/12/hello/gpw 2.txt' 1.txt --将每行中所有匹配的’12‘替换成’hello‘,并将替换后的内容写入2.txt
sed '/#/,.*//g' 1.txt --匹配有#号的行,替换匹配行中逗号后的所有内容,(,.*)表示逗号后的所有内容
sed 's/..$//g' 1.txt --替换每行中的最后两个字符为空,每个点代表一个字符
sed 's/^#.*//' 1.txt --将#开头的行替换为空行,即注释的行
sed 's/^#.*//;/^$/d' 1.txt --先替换1.txt文件中所有注释的空行为空行,然后删除空行,替换和删除操作中间用分号隔开
sed 's/^[0-9]/(&)/' 1.txt --将每一行中行首的数字加上一个小括号 (^[0-9])表示行首是数字,&符号代表匹配的内容
sed 's/$/&'ha'/' 1.txt --在1.txt文件的每一行后面加上"ha"字段
sed -n '1p' 1.txt --打印文件中的第一行内容
sed -n '2~2p' 1.txt --从第二行开始,每隔两行打印一行,波浪号后面的2表示步长
sed -n '$p' 1.txt --打印文件的最后一行
sed -n '1,5p' 1.txt --打印1到5行
sed -n '5,$p' 1.txt --打印从第5行到最后一行的内容
sed -n '/you/p' 1.txt --逐行读取文件,打印匹配you的行
sed -n '/ab/,5p' 1.txt --逐行读取文件,打印从匹配ab的行到第5行的内容
sed -n '1,/ab/p' 1.txt --打印第一行到匹配ab的行
sed -n '/ab/,/ac/p' 1.txt --打印从匹配内容ab到匹配内容ac的行
sed -n "$=" 1.txt --打印1.txt文件最后一行的行号
ed -n '/ab/=' 1.txt --打印匹配ab的行的行号
sed -n '/ab/{=;p}' 1.txt --打印匹配ab的行的行号和内容
sed 'r 2.txt' 1.txt --将文件2.txt中的内容,读入1.txt中,会在1.txt中的每一行后都读入2.txt的内容
sed '1r 2.txt' 1.txt --1.txt的第1行之后插入文件2.txt的内容
sed '/ab/r 2.txt' 1.txt --在匹配ab的行之后插入文件2.txt的内容,如果1.txt中有多行匹配ab则在每一行之后都会插入
sed '$r 2.txt' 1.txt --在1.txt的最后一行插入2.txt的内容
sed -n 'w 2.txt' 1.txt --将1.txt文件的内容写入2.txt文件,如果2.txt文件不存在则创建,如果2.txt存在则覆盖之前的内容
sed -n '2w 2.txt' 1.txt --将文件1.txt中的第2行内容写入到文件2.txt
sed -n -e '1w 2.txt' -e '$w 2.txt' 1.txt --将1.txt的第1行和最后一行内容写入2.txt
sed -n -e '1w 2.txt' -e '$w 3.txt' 1.txt --将1.txt的第1行和最后一行分别写入2.txt和3.txt
sed -n '/ab\|12/w 2.txt' 1.txt --将1.txt中匹配ab或12的行的内容,写入到2.txt中
sed -n '/ab/,$w 2.txt' 1.txt --将1.txt中从匹配ab的行到最后一行的内容,写入到2.txt中
sed -n '/ab/,+2w 2.txt' 1.txt --将1.txt中从匹配ab的行及其后2行的内容,写入到2.txt中
网友评论