美文网首页
2022-11-06--Linux三剑客之sed命令

2022-11-06--Linux三剑客之sed命令

作者: lyx_lyx | 来源:发表于2022-11-05 16:56 被阅读0次

基本用法:

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中

相关文章

网友评论

      本文标题:2022-11-06--Linux三剑客之sed命令

      本文链接:https://www.haomeiwen.com/subject/jddvtdtx.html