我有一個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