sed命令
sed是一种几乎包括在所有UNIX 平台(包括 Linux)的轻量级流编辑器。sed主要是用来将数据进行选取、替换、删除、新增的命令。
PS.相对于vim,vim只能修改文件,不能直接修改命令结果里的内容,如果想要修改命令的输出,需要先把命令结果保存在文件当中,再用vim修改这个文件;但是sed不光可以修改文件,还可以通过管道符接受数据进行操作,换句话说我不需要先把命令的结果先写到文件当中,而是sed直接通过管道符接收这个命令的结果。
格式:
[lhh98330@localhost ~]$ sed [选项] ‘[动作]’ 文件名
选项:
①-n:一般sed命令会把所有数据都输出到屏幕,如果加入此选择,则只会把经过sed命令处理的行输出到屏幕。
②-e:允许对输入数据应用多条sed命令编辑
③-i:用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出
动作:
①a\:追加,当前行后添加一行或多行。添加多行时,除最后一行外,每行末尾需要用“\”代表数据未完结。
②c\:行替换,用c后面的字符串替换原数据行,替换多行时,除最后一行外,每行末尾需用“\”代表数据未完结。
③i\:插入,在当期行前插入一行或多行。插入多行时,除最后一行外,每行末尾需要用“\”代表数据未完结。
④d:删除,删除指定的行。
⑤p:打印,输出指定的行。
⑥s:字串替换,用一个字符串替换另外一个字符串。格式为“行范围s/旧字串/新字串/g”(和vim中的替换格式类似)。
接下来我们以下面的文档进行演示:
例1.查看文件的第二行
"-n"与不加"-n"的区别:加"-n"就只输出你想要的内容
例2.删除第二行到第四行的数据,但不修改文件本身
PS.只要不加"-i"选项,就不会修改文件本身内容,只临时改变屏幕输出的内容。
例3."a\"追加,当前行后添加一行或多行。添加多行时,除最后一行外,每行末尾需要用“\”代表数据未完结。
本例为在第二行后追加hello\在第二行后追加hello、666
例4."i\"插入,在当期行前插入一行或多行。插入多行时,除最后一行外,每行末尾需要用“\”代表数据未完结。
本例为在第二行前插入"test\666"(用法同a\)
例5.行替换
本例为将第二行的内容替换成"No such person"
例6.字符串替换
本例为将第3行的74替换成99
例7.-e: 允许对输入数据应用多条sed命令编辑
本例为同时把“A”和“B”替换为空
END