gpt4 book ai didi

linux - 从unix中的倒数第二行删除一个字符

转载 作者:IT王子 更新时间:2023-10-29 00:55:47 25 4
gpt4 key购买 nike

我们如何在 unix 中删除文件倒数第二行的字符?

例如我有一个文件,内容如下:

aaa
bbb*
ccc*
ddd*
eee

我的输出应该是:

aaa
bbb*
ccc*
ddd
eee

对此有什么想法吗?

最佳答案

使用 sed 在一次传递中执行此操作的通用方法是使用滑动窗口,类似于 GNU sed manual 中描述的内容。 .

因为您只对倒数第二行的替换感兴趣,所以不需要保留空间。在这种情况下,单个 N 就足够了:

sed 'N; $! { P; D; }; s/.\n/\n/'

或者作为 BSD sed 兼容脚本:

sed 'N; $! { P; D; }; s/.\n/\
/'

输出:

aaa
bbb*
ccc*
ddd
eee

解释

  • N 命令向模式空间添加第二行。
  • $! block 在我们还没有到达最后一行时被评估。
  • { P; D; } 打印模式空间的第一行并将其删除。如果模式空间不为空,D 会产生重新启动脚本的副作用。
  • 仅当最后两行在模式空间中时才评估替换命令。

关于linux - 从unix中的倒数第二行删除一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15784978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com