gpt4 book ai didi

linux - 在 sed 中编程 rev

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:22:57 26 4
gpt4 key购买 nike

我正在尝试编写一个实用程序来反转输入行。以下只是按原样打印行:

#!/bin/sed -f
#insert newline at the beginning
s/^/\n/
#while the newline hasnt moved to the end of pattern space, rotate
: loop
/\n$/{!s/\(.*\)\(.$\)/\2\1/;!b loop}
#delete the newline
s/\n//

有什么问题吗?

最佳答案

/\n$/{!s/\(.*\)\(.$\)/\2\1/;!b loop}
  • ! 通常在地址/范围之后
  • !b(如果我理解你的意思,不是 goto)可能是 t(如果发生替换,则转到)<
  • $ 不是最后一组的一部分,而是紧跟在
  • 之后

所以这一行是:

/\n$/ !{s/\(.*\)\(.\)$/\2\1/;t loop}

现在,这段代码(在最后)什么都不做,它在开头添加一个新行,并通过将最后一个字符交换到第一个字符将其移动到结尾,并且不会反转任何内容。

sed 'G
:loop
s/\(.\)\(\n.*\)/\2\1/
t loop
s/.//' YourFile

应该可以解决问题

@TobySpeight 仍然增强了代码,消除了第一组的需要(代码改编)

关于linux - 在 sed 中编程 rev,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30590302/

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