我想在文档中搜索一个短语.
但也许这句话分为两行.
所以我想做的是:
搜索:
line1和line2
line2和line3
line3和line4
......
我是初学者,我想用sed练习.
那么,我怎样才能用sed做到这一点?
有任何想法吗?
这不起作用.
$ sed 'N;s/line2.line3/line23/' test.txt
line1
line2
line3
line4
line5
Run Code Online (Sandbox Code Playgroud)
1)sed读取第一行和第二行,然后搜索.
2)sed读取第三行和第四行,然后搜索.
......
所以如果第2行和第3行中的短语,我会想念它.
我可以阅读上一行吗?
更新
感谢@Beta的帮助.
sed '$!N;s/line2.line3/line23/;P;D;'
Run Code Online (Sandbox Code Playgroud)
有用.但我还是有点困惑.
还有一些问题.
我已经阅读了手册.
n:读取模式空间中的下一行输入.
N:将下一行输入附加到模式空间中.
d:删除模式空间.开始下一个周期.
D:删除模式空间中的第一个嵌入换行符.开始下一个循环,但如果模式空间中仍有数据,则跳过读取输入.
sed -n 'N;P' test.txt
Run Code Online (Sandbox Code Playgroud)
1)sed读取第一行和第二行,然后打印第一行.
2)sed清空其图案空间然后读取第三和第四行,然后打印第三行.
我对吗?
sed -n 'N;P;D' test.txt
Run Code Online (Sandbox Code Playgroud)
1)sed读取第一行和第二行,然后打印第一行.
2)sed不要清空其模式空间然后读取第三行,然后打印第二行.
我对吗?
为什么"下一行"在上面2个命令中的COMMAND N和n中有不同的行为?
sed '$!N;s/line2.line3/line23/;P;D;'
Run Code Online (Sandbox Code Playgroud)
我认为"$!" 没有必要.
有不止一种方法可以做到这一点.这接近你试过的:
sed '$!N;s/line2.line3/line23/;P;D;'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
130 次 |
| 最近记录: |