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