使用 sed 在匹配字符串的行尾插入文本

use*_*250 -1 bash sed

我在文本文件中有一行包含分配给变量的项目列表......

ITEMS="$ITEM1 $ITEM2 $ITEM3"
Run Code Online (Sandbox Code Playgroud)

我想编写一个 bash 脚本,它使用 sed 来查找与 ITEMS 匹配的行,并将另一个项目附加到双引号内的列表末尾,因此结果...

ITEMS="$ITEM1 $ITEM2 $ITEM3 $ITEM4"
Run Code Online (Sandbox Code Playgroud)

此外,我将要添加的项目编号存储在变量中,假设它是 $number。所以我试图让它添加 $ITEM4$number 并让它用我分配给该变量的任何内容替换 $number ,假设在这种情况下它是数字 4 。我怎样才能最好地做到这一点?谢谢!

Gil*_*not 5

尝试这个 :

num=4
sed "/ITEMS=/s/\"$/ \$ITEM${num}\"/"
Run Code Online (Sandbox Code Playgroud)

说明

  • 这里使用的 sed 形式是/re/s/before/after/wherere是正则表达式(如 a grep),s///替换
  • \s是一个空间,*表示 0 次或更多次出现
  • &代表替换左边部分匹配的字符串
  • ^作为正则表达式的第一个字符表示字符串/行的开始
  • $因为正则表达式的最后一个字符表示字符串/行的结尾