0

タグABのすべての出現を抽出したいXMLファイルがあります。このファイルは、最大 500,000 文字の長い 1 行です。

今、私は正規表現などについて知っていますが、それを試しsedてタグ内の文字のみを抽出しようとすると、結果に関して完全に失われます:)。

これが私のコマンドです:

sed -r 's/(.*)<my_tag>([A-Z][A-Z])<\/my_tag>(.*)/hello\2/g' myfile.out

ファイル全体を「helloAB」のみで変換します。たとえば、期待されるには少なくとも100以上の一致が含まれている必要があります。

だから私は貪欲なマッチングなどの概念について考えていますが、どこにも行きません。たぶんawk、より良いアイデアですか?

4

2 に答える 2

0

ご回答ありがとうございます。

@MannyD の提案を試してみましたが、残念ながら XML が適切に形成されていないようで、解析に失敗しました。整形式の XML だけを予測することはできないためgrep、解決策を作成しました。

grep -o "<my_tag>[A-Z][A-Z]</my_tag>" myfile.out | sort -u

オプションフラグは、-o各一致を新しい行に出力します。そこから、ファイルから一意の一致を並べ替えて出力します。

于 2013-08-30T06:51:02.250 に答える