0

パターンに情報がある非常に大きなファイルがあります:

 0 <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>274</font>
 1 <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>284</font>
 2 <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>299</font>
 3 <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>296</font>
 4 <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>273</font>

この行を次のように変更したい

274
284
299
296
273

パターンは次のとおりです。

'#4e9a06'>[0-9]*</font>

私はこれを使用しました:

perl -i.bak -pe 's/.*4e9a06//' copy.txt

しかし、私はまだ持っています:

'>274</font>
'>284</font>
'>299</font>
'>296</font>
'>273</font>
'>272</font>

私は sed を使用してみます:

cat file.bak | sed 's/form>/ /g' > copy2.txt

しかし、これはうまくいきません。残りの文字を削除するのを手伝ってもらえますか? ご回答ありがとうございます。

4

4 に答える 4

2

という名前のファイルがcopy.txtあり、そこに情報が保存されているとします。次に、実行するだけです:

cat copy.txt |egrep -o ">[0123456789]+<"|tr -d  "<"|tr -d ">"

これにより、ファイルの行が出力され、正規表現の一致する部分のみが出力されます (egrep のように行全体ではありません)。次に、「<」と「>」を切り取るだけで、これも一致します。

-編集-

おそらく、もう少し使いやすい構文といくつかの追加修正です。

cat copy.txt |egrep -o ">[1-9][0-9]*<"|tr -d  "<"|tr -d ">"

ここでは、数字は 1 から 9 までの数字で始まる必要があります。その後、他の数字が存在する場合と存在しない場合があります。

于 2012-10-01T13:18:15.700 に答える
0

次のことを試してください。

sed -e "s#.*>\([0-9]*\)</font>\$#\\1#" source.txt >out.txt
于 2012-10-01T13:22:07.663 に答える
0

Pythonを使用するソリューションがあります:

$ python -c 'import re,sys; print "\n".join(",".join(j for j in re.findall("06'\''>(.*)</fo", i)) for i in sys.stdin)' <xy
274
284
299
296
273

いいプログラムではありませんが、ワンライナーでやるつもりでした。

于 2012-10-01T13:24:22.413 に答える
0

html を正規表現で解析しないでください。

cat<<EOF | html2text | perl -lne 'print for /int (\d+)/g'
0 <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>274</font>
1 <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>284</font>
2 <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>299</font>
3 <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>296</font>
4 <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>273</font>
EOF

出力:

274
284
299
296
273
于 2012-10-01T13:43:12.410 に答える