labunix's blog

labunixのラボUnix

■OSS-DB Silverの例題をダウンロードして一ファイルにまとめるワンライナー

■OSS-DB Silverの例題をダウンロードして一ファイルにまとめるワンライナー

$ test -d OSS-DB_Silver || mkdir OSS-DB_Silver && cd OSS-DB_Silver; \
  BASE="http://www.oss-db.jp/measures/"; \
  for target in \
      sample_silver_management.shtml \
      sample_silver_knowledge.shtml \
      sample_silver_sql.shtml \
    ;do \
    wget -O - "${BASE}${target}" | \
       grep "<em>Q." | lv -s | grep -v "★★" | awk -F\" '{print $2}' | \
       for list in `xargs`;do \
         wget "${BASE}/${list}"; \
    done; \
  done; \
  commonline=`ls *.shtml | wc -l`; \
  for list in *.shtml;do \
    w3m -dump "$list" > $(echo "$list" | sed s/"shtml"/"txt"/); \
  done;unset list; \
  for list in *.txt;do \
    totalline=`wc -l "$list" | awk '{print $1}'`; \
    tail -n $(($totalline - 28)) "$list" | \
      head -n $(($totalline - 114 - 28)) > $(echo "$list" | \
      sed s/"txt"/"log"/); \
  done; unset list; \
  for list in *.log;do \
    for n in `seq 1 100`;do echo -n "-";done; echo ; \
    grep -v 'Yahoo!ブックマークに登録' "$list" | \
      grep -v '• English' ; \
  done > ../ossdb_silver.log

■かなりの量があります。

$ wc -l ../ossdb_silver.log 
4553 ../ossdb_silver.log

■例題として100問あります。
 「50問/1試験」なので2回分です。

$ grep "^\-*\-\$" ../ossdb_silver.log | wc -l
100

■「.txt」「.log」も同じ数あります。
 不要なら削除を。

$ ls ../OSS-DB_Silver/* | awk -F\. '{print $NF}' | sort | uniq -c
     97 log
     97 shtml
     97 txt

■Goldの例題の場合は以下で。

 OSS-DB Goldの例題をダウンロードして一ファイルにまとめるワンライナー
 http://labunix.hateblo.jp/entry/20140928/1411833011