Linux 如何将列/(conky命令)上移1行-最好使用sed
我的部分文件如下所示:Linux 如何将列/(conky命令)上移1行-最好使用sed,linux,sed,conky,Linux,Sed,Conky,我的部分文件如下所示: ${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/ra
${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行,丢弃第一行(或者,可以选择将第一行移动到最后一行)
编辑:转到后的数值在整个文件中以这种方式重复数次。我想以所描述的方式全部更改它们。此外,配置文件还包含之前和之后的其他内容
由于我刚刚开始使用sed,我想用sed来解决它,但只要它能进入linux shell脚本,就不必这样做
edit2:我希望不要混淆配置文件也包含sed命令。
这与我正在寻找的解决方案无关。这可能适合您(GNU-sed):
对于除最后一行以外的所有行,将换行符和下一行附加到模式空间$!N
对于以表达式s/^\(${goto[0-9]\+}\)(.*\n\)\(${goto[0-9]\+}\)/\3\2\1/
开头的两个连续行,其中${goto[0-9]\+}
表示一个或多个数字,记下这些字符串和中间的字符串,并将它们交换[0-9]\+
打印到第一个换行符P;D
,然后删除到并包括该换行符。如果图案空间不为空,则不要自动读取下一行,而是从第一个命令开始新的循环(然后追加换行…)\n
对于除最后一行以外的所有行,将换行符和下一行附加到模式空间$!N
对于以表达式s/^\(${goto[0-9]\+}\)(.*\n\)\(${goto[0-9]\+}\)/\3\2\1/
开头的两个连续行,其中${goto[0-9]\+}
表示一个或多个数字,记下这些字符串和中间的字符串,并将它们交换[0-9]\+
打印到第一个换行符P;D
,然后删除到并包括该换行符。如果图案空间不为空,则不要自动读取下一行,而是从第一个命令开始新的循环(然后追加换行…)\n
sed '$!N;s/^\(${goto [0-9]\+}\)\(.*\n\)\(${goto [0-9]\+}\)/\3\2\1/;P;D' file