-1

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

ITEMS="$ITEM1 $ITEM2 $ITEM3"

我想编写一个 bash 脚本,它使用 sed 来查找匹配项目的行,并将另一个项目附加到双引号内的列表末尾,所以它会导致......

ITEMS="$ITEM1 $ITEM2 $ITEM3 $ITEM4"

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

4

2 回答 2

5

试试这个 :

num=4
sed "/ITEMS=/s/\"$/ \$ITEM${num}\"/"

解释

  • /re/s/before/after/这里使用的 sed 形式re是正则表达式(如 a grep),s///替换
  • \s是一个空间,*表示 0 次或多次出现
  • &代表在替换的左边部分匹配的字符串
  • ^作为正则表达式的第一个字符表示字符串/行的开头
  • $作为正则表达式的最后一个字符表示字符串/行的结尾
于 2013-03-21T23:07:05.477 回答
3
$ cat file
ITEMS="$ITEM1 $ITEM2 $ITEM3"
$ number=4
$ sed "/ITEMS/s/\"$/ \$ITEM$number&/" file
ITEMS="$ITEM1 $ITEM2 $ITEM3 $ITEM4"
于 2013-03-21T23:46:59.883 回答