SED --- 在字符串中,将 token 1 之后的 word1 替换为 word2 --- 仅替换盎司

问题描述 投票:0回答:1

输入字符串:PARAM

一段不起作用的代码。

PARAM="0 " 0 - Exit" off 1 " 1 - RUN_INITIAL_TASK" off 2 " 2 - (N.I.U) FORBID REF LEAP SERVICE" off 3 " 3 - INSTALL MY REF LEAP SERVICE" off 4 " 4 - INSTALL SUDOERS" off 5 " 5 - INSTALL SET LOCALE" off 6 " 6 - REMOVE PACKAGE and SET LOCK" off 7 " 7 - INSTALL MY MINI SYS CONFIG" off 8 " 8 - INSTALL JOURNALD CONFIG" off 9 " 9 - INSTALL PAM.D CONFIG" off 10 " 10 - INSTALL MY BASH FUNCTIONS" off 11 " 11 - INSTALL KERNEL HEADERS and COMPILING TOOLS" off 12 " 12 - INSTALL SSH" off 13 " 13 - INSTALL PUTTY" off 14 " 14 - INSTALL BROTHER PRINTER" off 15 " 15 - INSTALL HPLIP PRINTER" off 16 " 16 - CONFIGURE FIREWALLD" off 17 " 17 - INSTALL VIRTUALBOX HOST MODE 1" off 18 " 18 - INSTALL VIRTUALBOX HOST MODE 2" off 19 " 19 - INSTALL VIRTUALBOX VM GUEST" off"

CUR_PARAM=${PARAM}

NEW_PARAM=$(echo ${CUR_PARAM} | sed  -e '/3/ s/off/on/')

得到了:

" 0 - Exit" on 1 " 1 -  ..............

预期结果:

0 " 0 - Exit" off 1 " 1 - RUN_INITIAL_TASK" off 2 " 2 - (N.I.U) FORBID REF LEAP SERVICE" off 3 " 3 - INSTALL MY REF LEAP SERVICE" **on** 4 " 4 - INSTALL SUDOERS" off 5 " 5 - INSTALL SET LOCALE" off 6 " 6 - REMOVE PACKAGE and SET LOCK" off 7 " 7 - INSTALL MY MINI SYS CONFIG" off 8 " 8 - INSTALL JOURNALD CONFIG" off 9 " 9 - INSTALL PAM.D CONFIG" off 10 " 10 - INSTALL MY BASH FUNCTIONS" off 11 " 11 - INSTALL KERNEL HEADERS and COMPILING TOOLS" off 12 " 12 - INSTALL SSH" off 13 " 13 - INSTALL PUTTY" off 14 " 14 - INSTALL BROTHER PRINTER" off 15 " 15 - INSTALL HPLIP PRINTER" off 16 " 16 - CONFIGURE FIREWALLD" off 17 " 17 - INSTALL VIRTUALBOX HOST MODE 1" off 18 " 18 - INSTALL VIRTUALBOX HOST MODE 2" off 19 " 19 - INSTALL VIRTUALBOX VM GUEST" off

欢迎任何帮助。

bash sed
1个回答
0
投票

很难猜出你想问什么,但根据标题,我猜

sed 's/\(3.*)off/\1on/'

一个复杂的问题是

.*
匹配最长的可能字符串。根据您的数据,也许像
[^-]*
这样的内容更有意义,只要字符不是破折号,它就会匹配。

括号内的字符串被捕获到

\1
中,然后我们在替换中使用捕获的字符串,基本上,将匹配项替换为自身,只有紧随其后的字符串从
off
更改为
on

您可能还想在

3
周围添加单词边界锚点,但具体效果取决于您使用的是哪种
sed
方言。常见的替代方案包括
\<3\>
\b3\b
[[:<:]]3[[:>:]]

© www.soinside.com 2019 - 2024. All rights reserved.