目前,我有一个功能齐全的 sed 命令,它通过以下方式将项目添加到特定文本文件中的列表中......
ITEMS="$ITEM1 $ITEM2 $ITEM3"
当我们希望插入时变为以下$ITEM4
...
ITEMS="$ITEM1 $ITEM2 $ITEM3 $ITEM4"
列表中的项目数量未知;它是动态的。并且该文本中的美元符号和引号应按字面意思理解。
我使用以下命令来完成对列表的添加(变量$itemNum
分配在其他地方)...
sed "/^\s*ITEMS=/s/\"$/ \$ITEM$itemNum&/" file.txt
当然,所有这些都是找到以ITEMS=
(可能还有前导空格)开头的行,并将该行中的最后一个双引号替换为空格加上所需的项目加上双引号(将替换的双引号放回原处)。但是,我还有一个额外的情况,ITEMS
列表可能是空的,像这样......
ITEMS=""
在这种情况下,我的命令会$ITEM4
像这样插入到列表的末尾...
ITEMS=" $ITEM4"
但是,我希望我的命令能够说明一个空列表,并且当列表确实为空时不放置前导空格,所以它看起来像......
ITEMS="$ITEM4"
我怎样才能改变我现有的命令来最好地完成这个?