ググったけど、なかったので作った
「なんでこんなのが必要なの?」と横にいた外国人に笑われたけど、そういう文化なんだからしょうがない・・・
無駄なものだとは分かってるが、応募者が多すぎてこんなところを指摘されて足切りされたらたまったもんじゃないので、しょうがなく従ってる感じ
コード
#!/bin/bash
name=$1
bib=$2
out=/tmp/author.txt
cat $bib | grep "author" | tr -d { | tr -d } | awk -F"author =" '{print $2}' | awk -F"$name" '{print $1}' | sed 's/ and /\n/g' > $out
ii=`wc $out | awk '{print $1}'`
cat $bib | grep "author" | tr -d { | tr -d } | awk -F"author =" '{print $2}' | sed 's/ and /\n/g' > $out
nn=`wc $out | awk '{print $1}'`
echo "$nn 人中 $ii 番目"
rm $bib
使い方
./count_authors.sh Einstein ~/Downloads/IOPEXPORT_BIB.bib
こんな感じでどうでしょうか?
$1に検索ワード(自分の苗字とか)
$2にbibファイル
bibファイルの中で、authorという欄をとってくる、その名まで検索ワードが何番目か取り出す
nnは全体が何行あるか
文字列が何行目にあるか数えるのが意外と難しい
whileで一行ずつ渡してifで確認することも考えたけど、実行が遅すぎてやめた・・・
それなら、awkでファイルの中身を分断して、それをwcで数えたほうが圧倒的に早かった
最後のrmはいらなかったら消してください
何個もbibファイルをダウンロードすると上書き保存してくれないので、rmを追加したので
改良案
たまにセパレーターが and じゃなくて, な論文があります
そういうときは手でコードを修正してください・・・
おそらく、一度こういう作業を手ですれば、二度目以降は差分のみをみていくだけで良いので楽になるはずです
ランキング参加中です
↓クリックしていただけると嬉しいです〜