N
將下一行加入到模式空間
D
刪除模式空間中的第一個字符到第一個換行符
P
打印模式空間中的第一個字符到第一個換行符
doubleSpace.txt
里邊的內容如下:
goo
d
man
使用下邊的命令可以實現把上邊對應的內容放到doubleSpace.txt
。
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
,然后依次輸入下邊的內容:
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 講》。