私は他の誰かが私に提供した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に "desc"を付けてリストを作成しました:
10,18,6,13,6...
ここで、データfを生成するプログラム私はちょうど間の値をプルする必要があるとして、これは簡単になります考え出し
<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>
...
>と<が、私はこれを使用する場合:ILEは次のように見えるようにデータを変更した
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