N
将下一行加入到模式空间
D
删除模式空间中的第一个字符到第一个换行符
P
打印模式空间中的第一个字符到第一个换行符
doubleSpace.txt
里边的内容如下:
bash
goo
d
man
使用下边的命令可以实现把上边对应的内容放到doubleSpace.txt
。
bash
echo 'goo' >> doubleSpace.txt
echo 'd' >> doubleSpace.txt
echo 'man' >> doubleSpace.txt
如果想要把good
显示成一行的话,可以使用sed 'N;s/\n//' doubleSpace.txt
,需要注意goo
与d
之间有换行符\n
,虽然N
命令可以读取多行命令到模式空间里边,但是不能把换行符去掉。
其实也可以使用元字符中的.
来匹配\n
,比如sed 'N;s/goo.d/good/' doubleSpace.txt
也可以把good
显示成一行。
在命令行里边输入cat << EOF >> b.txt
,然后依次输入下边的内容:
bash
hell
o bash hel
lo bash
EOF
sed 'N;s/\n//g;s/hello bash/hello sed\n/;P;D' b.txt
,N
先把文件中第一二行放到模式空间里边,然后把\n
替换成空字符,之后再把hello bash
替换成hello sed\n
输出之后,删除模式空间中第一行。然后N
把文件中第二三行放到模式空间里边,然后把\n
替换成空字符,之后再把hello bash
替换成hello sed\n
输出之后,删除模式空间中第一行。依次类推,还会把文件第三四行进行处理。
此文章为8月Day 12学习笔记,内容来源于极客时间《Linux 实战技能 100 讲》。