次の内容のxmlファイルがあります。
<query_1>false</query_1>
<query_2>true</query_2>
<query_3>true</query_3>
<query_4>false</query_4>
<query_5>false</query_5>
sed を使用してファイルを再編成することは可能ですか?「true」を取得して、次のように 1 行に出力します。
<query>2,3</query>
よろしく、イレク
次の内容のxmlファイルがあります。
<query_1>false</query_1>
<query_2>true</query_2>
<query_3>true</query_3>
<query_4>false</query_4>
<query_5>false</query_5>
sed を使用してファイルを再編成することは可能ですか?「true」を取得して、次のように 1 行に出力します。
<query>2,3</query>
よろしく、イレク
それは最も簡単な解決策ではないと思いますが、これを試すことができます:
sed -n '/<query_[0-9]*>true<\/query/{:a;s/^<query_\([0-9]*\)>.*/\1/;tb;ba;:b;H};${g;s/^\n//;s/\n/,/g};$s/.*/<query>&<\/query>/p' file
サンプルファイルを使用した出力は、まさにあなたが望むものです:
<query>2,3</query>
次の一連のコマンドは、要求した文字列を返します
$ grep true input | sed 's/>//g' | cut -d _ -f 3 | printf "<query>%s</query>" `paste -d, - -`
<query>2,3</query>
与える:
<query>2,3</query>