grep -o オプションを知ったかぶりしてみた。
grep で後方参照的なことをやろうと思うと、 -o オプションを使うと便利。
GREPコマンドは、マッチ行を取り出すので、MATCH部分を取り出すのはちょっと手間。
grep -o "<div id=“content”>.*"
でマッチした箇所だけを取り出す。
これでちょっとした解析がとても楽になります。
マッチ部を取り出す。
つまりあるキーワードを含む「行」ではなく「マッチ部分」を取り出す
grep -o で該当部分を取り出す
takuya@air:~$ curl mixi.jp | grep -o "<script[^>]*>[^<]*</script>" % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 11073 0 11073 0 0 23439 0 --:--:-- --:--:-- --:--:-- 31547 <script type="text/javascript" src="/static/js/lib/json.js?1317794491"></script> <script type="text/javascript" src="/static/js/lib/prototype-effects-1.6.0.2-1.8.1-compress.js?1289301118"></script> <script type="text/javascript" src="/static/js/lib/underscore-string-1.2.3-2.0.0-compress.js?1326782208"></script> <script type="text/javascript" src="/static/js/lib/namespace-brook-compress.js?1322460198"></script> <script type="text/javascript" src="/static/js/mixi.js?1318390340"></script> <script type="text/javascript" src="/static/js/lib/jquery-1.7.1.min.js?1326953090"></script> <script type="text/javascript" src="/static/js/lib/jquery-noconflict.js?1326953090"></script> <script type="text/javascript" src="/static/js//mixi/analysis.production.js?1320904321"></script> <script type="text/javascript" src="/static/js/lib/prototype/replacer_for_array_prototype.js?1321855252"></script> <script type="text/javascript" src="/static/js/jp/mixi/ad/expander.js?1329976799"></script>
例2
takuya@air:~$ curl mixi.jp | grep -o "<div[^>]*>[^<]*" <div id="page"> <div id="headerArea"> <div id="globalNavigation"> <div id="loginBodyArea"> <div id="loginMain"> <div id="loginArea"> <div id="footerArea"> <div class="footerMain">
ある正規表現マッチした箇所を取り出すことが出来るようになります。
つまり、ファイルからマッチする部分を取り出せばいいのです。テキストファイル最高
ruby の次と同じ
html = open("http://mixi.jp").read html =~ %r'<div id=“content">*.</div> ‘ puts $1
に相当する。
ちなみに
マッチしない行を探すには→grepで逆検索 (マッチするモノを除外)でマッチしないものを探す - それマグで!
grep -o オプションのman ページ
-o, --only-matching マッチする行のマッチした部分だけを (それが空文字列でなければ) 表示します。 マッチした各文字列は、それぞれ別の行に書き出します。
どうでもいいけどmixi・・・って
mixi.jpのJavascript、似たようなライブラリ大量に使って使い方汚すぎんよ。
2021-02-03
BASH_REMATCHについて言及