查看包含方括号的压缩文件的内容

时间:2018-07-31 16:45:24

标签: bash sed unzip brackets

x=`unzip -l "$i" | grep /config.xml | tail -1 | sed -e "s/.*:[0-9][0-9] *//"`
content=`unzip -c "$i" "$x" | DO MORE STUFF HERE

每当x输出带有方括号的字符串时,上述命令都会出现问题。例如,假设在运行x行之后,$ x =“ Refresher [Autosaved] /xml/config.xml”。如果将$ x传递到内容行,则会收到错误caution: filename not matched: Refresher [Autosaved]/xml/config.xml。我尝试更新sed命令以使用s/\[\([^]]*\)\]/\\\[\1\\\]/g转义括号,并且值可以很好地回显,但是当我将其保存为x时,\[\]变成{{1 }}和[,我回到平方。

如果我的x值带有方括号,如何运行内容命令?

1 个答案:

答案 0 :(得分:2)

使用现代$(...)而不是旧版`...`可以省去很多麻烦。前者不需要额外的转义:

$ x=$(echo 'Foo [Bar].baz' | sed "s/\[\([^]]*\)\]/\\\[\1\\\]/g")
$ printf '%s\n' "$x"
Foo \[Bar\].baz


$ x=`echo 'Foo [Bar].baz' | sed "s/\[\([^]]*\)\]/\\\[\1\\\]/g"`
$ printf '%s\n' "$x"
Foo [Bar].baz