0

「gsed regexp -i FILENAME」を使用して XML ファイルから抽出された行でいっぱいのファイルがあります。ファイル内の行はすべて、次のいずれかの形式のいずれかです。

<field number='1' name='Account' type='STRING'W/>

<field number='2' name='AdvId' type='STRING'W>

オプションの空白を表す「W」を最後に挿入しました。プロパティの順序と数は、ファイル全体のすべての行で必ずしも同じではありませんが、"number" は常に "type" の前にあります。

私が探しているのは、次のコマンドを実行できるように gnu sed に指定できる正規表現「regexp」です。

gsed regexp -i ファイル名

次のような行を含むファイルが表示されます。

1弦

2弦

数字の後に空白があり、各行の終わりに改行がある限り、結果の空白の量は気にしません。

可能だと確信していますが、妥当な時間内に方法を理解できません。誰でも助けることができますか?

どうもありがとう、ジュール

4

7 に答える 7

0

XML パーサーを使用した方がよいでしょうが、sed を使用する必要がある場合:

sed 's/<field number=\'(.*?)\'.*?type=\'(.*?)\'/\1 \2

于 2013-08-07T15:49:31.003 に答える
0
sed -ni "/<field .*>/s@^.*[[:space:]]number='\\([^']\\+\\).*[[:space:]]type='\\([^']\\+\\).*@\1 \2@p" FILENAME

または、 number と type の内容がオプションであることを気にしない場合:

sed -ni "/<field .*>/s@^.*[[:space:]]number='\\([^']*\\).*[[:space:]]type='\\([^']*\\).*@\1 \2@p" FILENAME

お好みでから[^']\\+に変更してください。[^']*

于 2013-08-07T15:50:35.920 に答える