gpt4 book ai didi

linux - 如何将列/(conky 命令)向上移动 1 行 - 最好使用 sed

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:05:57 25 4
gpt4 key购买 nike

我的部分文件如下所示:

${goto 97}${exec sed -n '1p' $HOME/.config/conky/itl/raw2}#
${goto 194}${exec sed -n '2p' $HOME/.config/conky/itl/raw2}#
${goto 291}${exec sed -n '3p' $HOME/.config/conky/itl/raw2}#
${goto 388}${exec sed -n '4p' $HOME/.config/conky/itl/raw2}#
${goto 485}${exec sed -n '5p' $HOME/.config/conky/itl/raw2}#
${goto 582}${exec sed -n '6p' $HOME/.config/conky/itl/raw2}#
${goto 679}${exec sed -n '7p' $HOME/.config/conky/itl/raw2}#
${goto 776}${exec sed -n '8p' $HOME/.config/conky/itl/raw2}#
${goto 873}${exec sed -n '9p' $HOME/.config/conky/itl/raw2}#

我想将“${goto nn}”向上移动 1 行,丢弃第一个(或者,可选地,将第一个移动到最后一个位置)

编辑:goto之后的数值在整个文件中以这种方式重复多次。我想按照描述的方式全部更改。此外,配置文件前后还包含其他内容。

因为我刚刚熟悉 sed,所以我想用 sed 解决它,但它不是必须的,只要它可以进入 linux shell 脚本即可。

edit2:我希望配置文件也包含 sed 命令不会造成混淆。这与我正在寻找的解决方案无关。

最佳答案

这可能对你有用(GNU sed):

sed '$!N;s/^\(${goto [0-9]\+}\)\(.*\n\)\(${goto [0-9]\+}\)/\3\2\1/;P;D' file
  • $!N 为除最后一行以外的所有行添加一个换行符和下一行到模式空间
  • s/^\(${goto [0-9]\+}\)\(.*\n\)\(${goto [0-9]\+}\)/\3\2\1/ 对于以表达式 ${goto [0-9]\+} where [0-9]\+ 开头的两个连续行表示一个或多个数字,记下这些字符串和中间的字符串并交换它们。
  • P;D 打印到第一个换行符 \n ,然后删除直到并包括换行符。如果模式空间不为空,则不会自动读取下一行,但会从第一个命令开始新的循环(然后附加一个换行符...)。

关于linux - 如何将列/(conky 命令)向上移动 1 行 - 最好使用 sed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13540407/

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