$cat in.txt a b c d$sed '=;N' in.txt 1 a b3 c d
看起来像“N”命令在每隔一行工作.也许这是自然的,因为命令’N’加入下一行并更改当前行号.但,
$sed 'N;$!P;$!D;$d' thegeekstuff.txt
(我看到这个here)
以上示例删除文件的最后两行.这不仅用于偶数编号的文件,还可以使用奇数文件.所以在这个例子中,’N’命令在每行上运行.
有什么区别?
你能告诉我为什么当我运行这样的sed时,我看不到最后一行?
# sed N odd-lined-file.txt解决方法 摘自信息sed:
`sed' operates by performing the following cycle on each lines ofinput: first,`sed' reads one line from the input stream,removes anytrailing newline,and places it in the pattern space. Then commandsare executed; each command can have an address associated to it:addresses are a kind of condition code,and a command is only executedif the condition is verifIEd before the command is to be executed....When the end of the script is reached,unless the `-n' option is inuse,the contents of pattern space are printed out to the outputstream,...Unless special commands (like 'D') are used,the pattern space isdeleted between two cycles...`N' Add a newline to the pattern space,then append the next line of input to the pattern space. If there is no more input then `sed' exits without processing any more commands....`D' Delete text in the pattern space up to the first newline. If any text is left,restart cycle with the resultant pattern space (without reading a new line of input),otherwise start a normal new cycle.
这应该几乎解决您的查询.但是我仍然会尝试解释你们三种不同的情况:
情况1:
sed从输入中读取一行. [现在模式空间有一行]
> =打印当前行号.
> N将下一行读入模式空间[现在模式空间中有2行]
>如果没有下一行读取,则在这里退出sed. [即:在奇数行的情况下,sed出现在这里 – 因此最后一行被吞没,无需打印.]
> sed打印图案空间并清理它. [图案空间为空.]
>如果EOF在这里到达sed.否则重新启动步骤1的完整循环.[即:如果偶数行,则sed退出.]
总结:在这种情况下,sed读取2行,并一次打印2行.最后一行被吞下,它有奇数行(见步骤3).
案例2:
sed从输入中读取一行. [现在模式空间有一行]
> N将下一行读入模式空间. [现在模式空间有2行]
>如果它失败退出这里.这只有在有1行时才会发生.
>如果它的最后一行($!)从模式空间打印第一行(P). [图案空间的第一行被打印出来.但是模式空间中仍然有2行.]
>如果它的最后一行($!)从模式空间中删除第一行(D)[现在模式空间中只有一行(第二个)],并从步骤2重新启动命令循环.它因为的命令D(见上面的摘录).
>如果最后一行($),则删除(d)完整的模式空间. [即.达到EOF] [开始此步骤之前,模式空间中有2行现在已被d清除 – 在此步骤结束时,模式空间为空.]
sed自动停止在EOF.
总结:在这种情况下:
sed首先读取2行.
>如果有下一行可读取,打印第一行并阅读下一行.
> else从缓存中删除两行.这样它总是删除最后的2行.
案例3:它与CASE:1相同,只需从其中删除步骤2.
总结以上是内存溢出为你收集整理的“N”命令如何在sed中工作?全部内容,希望文章能够帮你解决“N”命令如何在sed中工作?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)