我想在文档中搜索一个短语
但也许这句话分为两行
所以我想做的是:
搜索:
line1和line2
第2行和第3行
第3行和第4行
......
我是初学者,我想用sed练习。
那么,我怎么能用sed呢?
有什么想法吗?
这不起作用。
$ sed 'N;s/line2.line3/line23/' test.txt
line1
line2
line3
line4
line5
1)sed读取第一行和第二行,然后搜索。
2)读取第三行和第四行,然后搜索。
......
所以,如果第2行和第3行中的短语,我会错过它
我可以阅读上一行吗?
更新
感谢@Beta的帮助。
sed '$!N;s/line2.line3/line23/;P;D;'
有效。但我还是有点困惑
还有一些问题。
我已阅读手册。
n:读取模式空间中的下一行输入。
N:将下一行输入附加到模式空间中 d:删除模式空间。开始下一个周期 D:删除模式空间中的第一个嵌入换行符。开始下一个循环,但如果模式空间中仍有数据,则跳过读取输入。
sed -n 'N;P' test.txt
1)读取第一行和第二行,然后打印第一行 2)sed清空其图案空间然后读取第三和第四行,然后打印第三行 我是对的吗?
sed -n 'N;P;D' test.txt
1)读取第一行和第二行,然后打印第一行
2)sed不要清空它的模式空间然后读取第三行,然后打印第二行
我是对的吗?
为什么“下一行”在上面2个命令的COMMAND N和n中有不同的行为?
sed '$!N;s/line2.line3/line23/;P;D;'
ps.我想“$!”没有必要。
答案 0 :(得分:5)
有多种方法可以做到这一点。这与你的尝试很接近:
sed '$!N;s/line2.line3/line23/;P;D;'