大佬教程收集整理的这篇文章主要介绍了GNU sed中“D”命令的含义是什么?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
sed
手册.它说:
但我不知道,如何使用它
echo '''1 2 3 4 5'''>test1 sed 'D' test1
什么都没有
默认情况下,sed读取其输入并一次将一行放入模式中.除非采取步骤向模式空间添加换行符,否则模式空间永远不会有换行符.在这种情况下,D就像d一样,因此,该命令不产生输出:
seq 5 | sed 'D'
我们可以使用替换命令将换行符放入模式空间.在下文中,我们向模式空间添加换行符,然后删除D命令.因为有换行符,所以sed在没有读取任何输入的情况下开始循环.因此,以下是无限循环:
seq 5 | sed 's/^/dummy line\n/;p; D' # Infinite loop
现在,让我们用D做一些有用的事情.在下面的例子中,我们使用N来读取一个新行,导致两行在模式空间中,换行符分隔它们.除了输入中的最后一行,我们要求D命令删除旧行,sed开始循环.结果,
以下sed命令的行为类似于tail -2:
$seq 5 | sed 'N;$!D' # Like `tail -2` 4 5
最后,让我们将其扩展为仅打印文件的最后X行.以X = 5为例,下面打印输入的最后5行:
$seq 200 | sed ':a; N; 1,5ba; D' # Like `tail -5` 196 197 198 199 200
循环:a; N; 1,5ba将文件的前5行读入模式空间.之后,N读取一个新行,而D导致模式空间中最旧的行被删除.因此,模式空间将始终具有最新的5行.
以上命令都是在GNU sed下测试的.对于BSD sed,期望进行一些小的改动以获得相同的结果.
以上是大佬教程为你收集整理的GNU sed中“D”命令的含义是什么?全部内容,希望文章能够帮你解决GNU sed中“D”命令的含义是什么?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。