我有一个grep行,其他人为我提供,我不知道如何改变。多行grep不制作列表
原始线是这样的:
grep id=\"desc\"* $ADDON_SETTINGS | awk -v ORS=, '{gsub(/"/, "");print $2}' | tr -s 'value=' ' ' | sed 's/ //g' | echo "[$(cat)]"
它从包含一个文件的以下(这是一个样本段)被拉:
<settings>
<setting id="cfirst" value="false" />
<setting id="cicons" value="false" />
<setting id="days" value="3" />
<setting id="delay" value="0.000000" />
<setting id="desc01" value="10" />
<setting id="desc02" value="18" />
<setting id="desc03" value="6" />
<setting id="desc04" value="13" />
<setting id="desc05" value="6" />
...
它拉出值用于与线在ID“递减”,并产生了一个清单:
10,18,6,13,6...
现在,生成数据F程序ILE已更改的数据看起来像这样:
<settings version="2">
<setting id="allc" default="true">false</setting>
<setting id="cfirst" default="true">false</setting>
<setting id="cicons" default="true">false</setting>
<setting id="days">3</setting>
<setting id="delay" default="true">0</setting>
<setting id="desc01">10</setting>
<setting id="desc02">18</setting>
<setting id="desc03">6</setting>
<setting id="desc04">13</setting>
...
我想我只需要拉之间>和<但值,这可能是更容易,如果我用这个:
grep id=\"desc\"* $ADDON_SETTINGS | awk -v ORS=, '{">|<";print $3}' | echo "[$(cat)]"
但它的不正确。不知道我错过了什么。
这可能是最好的方式去作为文件是XML。我使用'xmlstarlet sel -t -v“/ settings/setting [contains(@id,'cicons')]”$ ADDON_SETTINGS'来计算常规设置,但我需要输出所有'“desc”用逗号隔开的行。因此,上面代码段的输出应该是'10,18,6,13' – edit4ever
@ edit4ever,只需将'tr'\ n''''改为'tr'\ n'','期望的序列 – RomanPerekhrest