cat /etc/redhat-release看到操作系统是CentOS Linux release 7.6.1810,uname -r看到内核版本是3.10.0-957.el7.x86_64,sed --version可以看到sed版本是4.2.2。

echo 'a : 1 : good : g' >> sed_daicpnrwq.txt
echo 'b : 2 : well : w' >> sed_daicpnrwq.txt
echo 'c : 3 : food : f' >> sed_daicpnrwq.txt
echo 'd : 4 : hood : h' >> sed_daicpnrwq.txt
echo 'e : 5 : bell : b' >> sed_daicpnrwq.txt
echo 'o : 6 : toll : t' >> sed_daicpnrwq.txt
echo '1 : a : good : g' >> sed_daicpnrwq.txt
echo '2 : b : well : s' >> sed_daicpnrwq.txt
echo '3 : c : food : f' >> sed_daicpnrwq.txt
把下边的内容:
a : 1 : good : g
b : 2 : well : w
c : 3 : food : f
d : 4 : hood : h
e : 5 : bell : b
o : 6 : toll : t
1 : a : good : g
2 : b : well : s
3 : c : food : f
写入到sed_daicpnrwq.txt里边。

删除
sed '/寻址/d' filename就是把匹配上的内容所在那行在模式空间删除,然后改变控制流。
sed '/^1/d' sed_daicpnrwq.txt把以1开头的一行删除了,但是没有把原文件里边的内容删除。

sed '/^1/d;s/a/#/g' sed_daicpnrwq.txt没有把删除的那一行中的a替换成#,说明改变了控制流。

sed '/^1/d;=' sed_daicpnrwq.txt把以1开头的一行删除了之后把行号输出在每行上边,没有把原文件里边的内容删除。

一般先进行其他操作,然后再进行删除操作。
追加
sed '/寻址/a\插入字符' filename在匹配上的内容下边一行追加,sed '/oo/a\%%%%%' sed_daicpnrwq.txt匹配上有oo的行,然后在匹配上的每行下边插入%%%%%。

插入
sed '/寻址/i\插入字符' filename在匹配上的内容上边插入,sed '/ll/i\######' sed_daicpnrwq.txt匹配上有ll的行,然后在匹配上的每行上边插入######。

更改
sed '/寻址/c\changestring' filename把匹配上的每行改写成changestring。
sed '/well/c\testChange' sed_daicpnrwq.txt把匹配上的每行都改写成testChange。

读写文件
echo "4 : d : got : g" >> sed_rfile.txt
echo "5 : e : foot : f" >> sed_rfile.txt
把下边的内容:
4 : d : got : g
5 : e : foot : f
写入到sed_rfile.txt。

sed '/寻址/r file1' file2把file2匹配的每行输出之后,把file2中的内容输出到匹配上的行之后。
sed '/good/r sed_rfile.txt' sed_daicpnrwq.txt把sed_rfile.txt输出到sed_daicpnrwq.txt匹配到good的行之后。

下一行
sed '/good/n;/well/d' sed_daicpnrwq.txt可以转向 good匹配上的下一行删除well匹配上的一行,sed '/good/n;/good/d' sed_daicpnrwq.txt没有删除good匹配上的行,sed '/good/n;/food/d' sed_daicpnrwq.txt可以转向匹配good的下一边删除well匹配上的一行。

打印行号
sed '=' sed_daicpnrwq.txt可以打印行号。

打印
sed 'p' sed_daicpnrwq.txt把所有行都输出一遍。

sed '/^a/p' sed_daicpnrwq.txt把匹配上的行a : 1 : good : g输出。

seq
seq生成数字序列,-s是指定数字序列之间的分隔符。
seq 1 15能够生成1到15的数字序列。

seq -s "+" 1 15能够生成1+2+3+4+5+6+7+8+9+10+11+12+13+14+15的数字序列。

seq 5 -1 1能够生成从5到1数字序列,5是起始数字,-1是步长,即每次减一,1是结束数字。

seq -s "-" 5 -1 1能够生成5-4-3-2-1的数字序列。

退出
seq 1 10000 >> seq.txt生成1到10000的数字序列,然后写入到seq.txt,之后使用tail -n 10 seq.txt看一下最后10行的内容。

sed '10q' sed_daicpnrwq.txt只处理到第10行。

在sed中,q比p效率高。
此文章为8月Day 10学习笔记,内容来源于极客时间《Linux 实战技能 100 讲》。