sed 中有多行处理的命令:N、D、P
现有文件 test.txt ,内容如下:
line one
line two
line three
line four
分别对 test.txt 执行下面的命令:
[normal@centos7-server tmp]$ sed -n 'N; /two/P' test.txt
line one
[normal@centos7-server tmp]$ sed -n 'N; /one\nline/P' test.txt
line one
[normal@centos7-server tmp]$ sed 'N; /two/D' test.txt
line three
line four
[normal@centos7-server tmp]$ sed 'N; /one\nline/D' test.txt
line two
line three
line four
N 用于把下一行数据追加到 pattern space,如果没有下一行,则退出循环
P 打印 pattern sapce 中的第一行数据
D 删除 pattern space 中的第一行数据,如果 pattern space 中仍然有数据,继续从头执行(不跳到下一个循环)
上面的例子中两条 P 命令的输出结果一致,我的问题是,为什么两条 D 命令的结果不一致,请问造成这种差异的原因是什么?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.