sed 常用的命令

$ sed -n '$p' ok.txt #打印出最后一行
$ sed -n '$=' ok.txt #打印总行数
$ sed -n '/$/=' ok.txt #查找空白行数

打印

命令 解释
$ sed -n '$p' ok.txt #打印出最后一行
$ sed -n '$=' ok.txt #打印总行数
$ sed -n '/$/=' ok.txt #查找空白行数
seq 10 | sed -n '1~2p'  #输出奇数次序的值
seq 10 | sed -n '2~2p'  #输出偶数次序的值

插入内容

命令 解释
sed '5 a\ 123' ok.txt 在第5行后插入一新行,内容为123
sed '5 i\ 123' ok.txt 在第5行前插入一新行,内容为123
sed '5 s/$/123/' ok.txt 在第5行行尾追加,内容为123
sed '5 s/^/123/' ok.txt 在第5行开头追加,内容为123
sed '/FTP/i 123' ok.txt 在含有FTP的行前面新插入一行,内容为123
sed '/FTP/a 123' ok.txt 在含有FTP的行后面插入一行,内容为123

删除内容

命令 解释
sed '1~2d' /etc/passwd #删除第1,3,5,7,9……行(1为初始行,2为步长)
sed '2~2d' /etc/passwd #删除第2,4,6,8,…… 行(2为初始行,2为步长)
sed "/user02/,+1d" qqqq.txt # 找到user02,然后从它开始再往下一行都删掉

修改匹配字符串内容

命令 解释
sed 's/root/ROOT/' t1 # 每行第一个root进行替换
sed 's/root/ROOT/g' t1 # 文件中所有root进行替换
sed '2s/root/ROOT/g' t1 # 仅仅第2行的所有root进行替换
sed '2s/root/ROOT/' t1 # 仅仅第2行的第一个root进行替换
sed '2s/root/ROOT/2' t1 # 仅仅第2行的第2个root进行替换
sed -n 's/root/ROOT/w /tx' t1 # 仅仅第2行的第2个root进行替换,并将被替换后的第2行内容放入新的文件tx内
sed 's/^/# /' t1 #在文件的每行前面添加 # 注释

统计文件中每个单词出现了多少次:

sed 's/ /\n/g' file.txt|sort|uniq -c

将字符a或b或c或d全部都删除:

sed 's/[a,b,c,d]//g' test.txt

将字符a或b或c全部都用双引号括起来:

sed 's/[a,b,c,d]/"&"/g' test.txt

特殊修改

$ sed -i.bak ‘s/123/efg/g’ a.txt # 备份源文件 参数-i后缀:替换并将源文件备份改后缀

sed -n '1,8w user.txt' /etc/passwd # 将文件的第1行到第8行内容保存到user.txt文件

$ sed -i ’2 r readfile.txt’ writefile.txt # 参数r:在某行插入文件

逐个字符串对应替换

y 替换,按照位置来匹配替换 y/// 不识别re

  sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' t1  # 大小写转换,注意前后每个字符对应

替换匹配行

c参数,直接修改对应行

[root@tx3 ~]$ sed -n '1c ROOT' t1
posted @ 2024-07-17 10:30  枫奇丶宛南  阅读(8)  评论(0编辑  收藏  举报