人机交互之期刊文本中提取信息——awk

涉及知识点:

1.对于自己整理的期刊信息,根据自己的需求来提取期刊名及其信息

期刊TXT文本如下:

#本稿采用了《适合理论、计算化学投稿的期刊及其2018年影响因子(2019年公布),作者sobereva》为基础+《2022年3月17日止于LetPub上搜索到的各期刊影响因子及区》组成                    
#格式采用《期刊名全称;期刊名简称; 影响因子(CiteScore);中科院分区》
——————————————————————————————理论计算
期刊;WIREs Comput Mol Sci;WIRES COMPUT MOL SCI;27.70;一区
期刊;J CHEM THEORY COMPUT;J CHEM THEORY COMPUT;9.30;二区
期刊;J CHEM INF MODEL;J CHEM INF MODEL;6.40;二区
期刊;PHYS CHEM CHEM PHYS;PHYS CHEM CHEM PHYS;6.10;三区
期刊;J COMPUT CHEM;J COMPUT CHEM;5.40;三区
期刊;CHEMPHYSCHEM;CHEMPHYSCHEM;3.102;四区
期刊;JOURNAL OF CHEMICAL PHYSICS;J CHEM PHYS;5.50;三区
期刊;Journal of Physical Chemistry Letters;J PHYS CHEM LETT;10.10;二区
期刊;Journal of Physical Chemistry C;J PHYS CHEM C;7.10;二区
期刊;JOURNAL OF PHYSICAL CHEMISTRY B;J PHYS CHEM B;5.10;三区
期刊;JOURNAL OF PHYSICAL CHEMISTRY A;J PHYS CHEM A;4.50;三区
期刊;INTERNATIONAL JOURNAL OF QUANTUM CHEMISTRY;INT J QUANTUM CHEM;3.40;四区
期刊;CHEMICAL PHYSICS LETTERS;CHEM PHYS LETT;3.70;四区
期刊;JOURNAL OF MOLECULAR GRAPHICS & MODELLING;J MOL GRAPH MODEL;3.90;四区
期刊;Chemical Physics;CHEM PHYS;3.30;四区
期刊;Molecular Simulation;MOL SIMULAT;3.20;四区
期刊;STRUCTURAL CHEMISTRY;STRUCT CHEM;3.00;四区
期刊;MOLECULAR PHYSICS;MOL PHYS;3.10;四区
期刊;THEORETICAL CHEMISTRY ACCOUNTS;THEOR CHEM ACC;2.60;四区
期刊;JOURNAL OF PHYSICAL ORGANIC CHEMISTRY;J PHYS ORG CHEM;3.00;四区
期刊;Journal of Molecular Modeling;J MOL MODEL;2.50;四区
期刊;Computational and Theoretical Chemistry;COMPUT THEOR CHEM;3.20;四区
期刊;Structure and Bonding;STRUCT BOND;3.20;四区
期刊;Advances in Quantum Chemistry;ADV QUANTUM CHEM;2.00;四区
期刊;JOURNAL OF THEORETICAL & COMPUTATIONAL CHEMISTRY;J THEOR COMPUT CHEM;1.70;四区
期刊;Journal of Structural Chemistry;J STRUCT CHEM;1.10;三区
期刊;Advanced Theory and Simulations;ADV THEOR SIMUL;3.60;三区
期刊;JOURNAL OF COMPUTATIONAL CHEMISTRY;J COMPUT CHEM;5.40;三区
期刊;International Journal of Computational and Theoretical Chemistry ;IJCTC;未录;未录
期刊;Cmmunications in Computational Chemistry ;CiCC;未录;未录
期刊;SDRP Journal of Computational Chemistry & Molecular Modelling;SJOCC&MM;未录;未录
期刊;Computation;Computation;2.683;2区
期刊;Living Journal of Computational Molecular Science ;LiveCoMS;未录;未录
————————————————————————————————综合
期刊;CHEMICAL REVIEWS;CHEM REV;96.90;一区
期刊;NATURE;NATURE;56.90;一区
期刊;SCIENCE;SCIENCE;46.80;一区
期刊;CHEMICAL SOCIETY REVIEWS;CHEM SOC REV;72.40;一区
期刊;Nature Chemistry;NAT CHEM;37.10;一区
期刊;ACCOUNTS OF CHEMICAL RESEARCH;ACCOUNTS CHEM RES;36.30;一区
期刊;CHEM;CHEM-US;26.00;一区
期刊;JOURNAL OF THE AMERICAN CHEMICAL SOCIETY;J AM CHEM SOC;25.10;一区
期刊;Advanced Science;ADV SCI ;19.20;一区
期刊;ANGEWANDTE CHEMIE-INTERNATIONAL EDITION;ANGEW CHEM INT EDIT;21.70;一区
期刊;Science Advances;SCI ADV ;16.60;一区
期刊;Nature Communications;NAT COMMUN;20.00;一区
期刊;PROCEEDINGS OF THE NATIONAL ACADEMY OF SCIENCES OF THE UNITED STATES OF AMERICA;P NATL ACAD SCI USA;16.20;一区
期刊;Chemical Science;CHEM SCI;14.50;一区
期刊;CHEMICAL COMMUNICATIONS;CHEM COMMUN;9.40;二区
期刊;Chemistry-A European Journal;CHEM-EUR J;9.00;二区
期刊;Scientific Reports;SCI REP-UK;7.10;三区
期刊;IJMS, International journal of molecular sciences;INT J MOL SCI;6.00;二区
期刊;Frontiers in Chemistry;FRONT CHEM;4.10;二区
期刊;SoftwareX;SOFTWAREX;0.00;四区
期刊;FARADAY DISCUSS;FARADAY DISCUSS;7.40;三区
期刊;Chemistry-An Asian Journal;CHEM-ASIAN J;6.60;三区
期刊;NEW JOURNAL OF CHEMISTRY;NEW J CHEM;5.30;三区
期刊;RSC Advances;RSC ADV;5.90;三区
期刊;SPECTROCHIMICA ACTA PART A-MOLECULAR AND BIOMOLECULAR SPECTROSCOPY;SPECTROCHIM ACTA A;5.80;三区
期刊;Journal of Computational Science;J COMPUT SCI-NETH;3.976;三区
期刊;PHYSICAL REVIEW E;PHYS REV E;4.30;三区
期刊;ChemistryOPEN;CHEMISTRYOPEN;3.90;三区
期刊;ChemistrySelect;CHEMISTRYSELECT;3.10;四区
期刊;Journal of Computational Electronics;J COMPUT ELECTRON;2.90;四区
期刊;JOURNAL OF CHEMICAL SCIENCES;J CHEM SCI;2.60;四区
期刊;Canadian Journal of Chemistry;CAN J CHEM;2.30;四区
期刊;AUSTRALIAN JOURNAL OF CHEMISTRY;AUST J CHEM;2.30;四区
期刊;CROATICA CHEMICA ACTA;CROAT CHEM ACTA;1.60;四区
期刊;BULLETIN OF THE KOREAN CHEMICAL SOCIETY;B KOREAN CHEM SOC;1.30;四区
期刊;Russian Journal of Physical Chemistry A;RUSS J PHYS CHEM A+;1.20;四区
期刊;ACS Omega;ACS OMEGA;3.90;三区
期刊;Communications Chemistry;COMMUN CHEM;5.10;二区
期刊;Can Chem Trans;CCT;未录;未录
期刊;Science of Nature;SCI NAT-HEIDELBERG;1.954;三区
期刊;Open Journal of Physical Chemistry;OJOPC;未录;未录
期刊;International Journal of Analytical Chemistry;INT J ANAL CHEM;1.885;四区
期刊;Current Analytical Chemistry;CURR ANAL CHEM;1.892;四区
期刊;JOURNAL OF PHYSICAL ORGANIC CHEMISTRY;J PHYS ORG CHEM;2.391;四区
期刊;Science Journal of Chemistry ;SJC;未录;未录
期刊;PHYSICAL CHEMISTRY CHEMICAL PHYSICS;PHYS CHEM CHEM PHYS;1.90;未录
期刊;American Journal of Chemistry and Application ;AASCIT;未录;未录
期刊;Journal of Atomic and Molecular Sciences;J AT MOL SCI;0.00;四区
期刊;CHEMICAL REVIEWS;CHEM REV;60.622;一区

主体代码如下:

BEGIN{
printf"——————————————————————————————————————\n"
printf"程序介绍如下:\n"
printf"本程序对期刊的归档,是基于《适合理论、计算化学投稿的期刊及其2018年影响因子(2019年公布),作者sobereva》为基础+《2022年3月17日止于LetPub上搜索到的各期刊影响因子及中科院分区》组成\n"
printf"——————————————————————————————————————\n"
printf"请问您想让本程序实现如下哪个功能:\n"
printf"1.输入期刊的全称或缩写,给出该期刊的所有信息。(输入范例:输入的期刊名,应当是LetPub上所给出的期刊全称或简称!)\n"
printf"2.输入您想查询的中科院分区,给出对应区类所有期刊信息。(输入范例:一区)\n"
printf"3.输入您想查询的期刊影响因子范围,给出对应影响因子所有期刊信息。(输入范例:>3.10)\n"
printf"——————————————————————————————————————\n"
printf"请输入对应功能的序号:"
getline < "-"
get_input_number=$0
printf"——————————————————————————————————————\n"
#实现1功能
if(get_input_number==1)
{
  printf"请输入您想搜索的期刊名(全称或缩写):"
  getline < "-"
  get_input_name=$0
  printf"您输入的期刊名为:%s\n",get_input_name
  "grep '"get_input_name"' total.txt"|getline
  get_information[1]=$0
  #获取全称
  "printf '"get_information[1]"'|awk -F; '{printf $2}'"|getline
  full_name=$0
  #获取缩写
  "printf '"get_information[1]"'|awk -F; '{printf $3}'"|getline
  abbreviation=$0
  #获取影响因子
  "printf '"get_information[1]"'|awk -F; '{printf $4}'"|getline
  CiteScore=$0
  #获取中科院分区
  "printf '"get_information[1]"'|awk -F; '{printf $5}'"|getline
  Chinese_Academy_of_Sciences_Division=$0

  printf "您搜索的期刊信息如下:\n"
  printf "全称:%s\n",full_name
  printf "缩写:"abbreviation"\n"
  printf "影响因子(CiteScore):"CiteScore"\n"
  printf "中科院分区:"Chinese_Academy_of_Sciences_Division"\n"
}

#实现2功能
if(get_input_number==2)
{
  printf"请输入您想搜索的中科院分区数:"
  getline < "-"
  get_input_division=$0
  printf"您输入的中科院分区数为:%s\n",get_input_division
  #下面的循环,是为了得到文本里总共有多少行,为接下来的遍历作基础
  for(i=1;i<=1000;i++)
  {
    "cat total.txt|awk '{print NR}'"|getline
    count=$0
  }
  count1=0
  for(i=1;i<=count;i++)
  {
    "grep '"get_input_division"' total.txt"|getline
    a[i]=$0
    count1=count1+1
    if(a[i]==a[i-1])
    {
      break
    } 
  }
  for(i=1;i<=count1-1;i++)
  {
    #获取全称
    "printf '"a[i]"'|awk -F; '{printf $2}'"|getline
    full_name=$0
    #获取缩写
    "printf '"a[i]"'|awk -F; '{printf $3}'"|getline
    abbreviation=$0
    #获取影响因子
    "printf '"a[i]"'|awk -F; '{printf $4}'"|getline
    CiteScore=$0
    #获取中科院分区
    "printf '"a[i]"'|awk -F; '{printf $5}'"|getline
    Chinese_Academy_of_Sciences_Division=$0
    printf "第%d个期刊信息如下:\n",i
    printf "全称:%s\n",full_name
    printf "缩写:"abbreviation"\n"
    printf "影响因子(CiteScore):"CiteScore"\n"
    printf "中科院分区:"Chinese_Academy_of_Sciences_Division"\n" 
    printf "————————————————————————————————\n"
  }
}
#实现3功能
if(get_input_number==3)
{
  printf"请输入您想搜索的影响因子区间(输入格式范例:< 3.10,有空格):"
  getline < "-"
  get_input_citescore=$0
  printf"您输入的影响因子区间为:%s\n",get_input_citescore
  "printf '"get_input_citescore"'|awk '{printf $1}'"|getline
  fuhao=$0
  "printf '"get_input_citescore"'|awk '{printf $2}'"|getline
  number=$0
  #下面的循环,是为了得到文本里总共有多少行,为接下来的遍历作基础
  for(i=1;i<=1000;i++)
  {
    "cat total.txt|awk '{print NR}'"|getline
    count=$0
  }
  count1=0
  for(i=1;i<=count;i++)
  {
    "grep '期刊' total.txt"|getline
    #a[]保存了所有期刊的信息
    a[i]=$0
    count1=count1+1
    if(a[i]==a[i-1])
    {
      break
    }
  }
    #开始提取期刊的影响因子并比较
  count2=0
  if(fuhao=="<")
  {
    for(i=1;i<=count1-1;i++)
    {
      "printf '"a[i]"'|awk -F; '{printf $4}'"|getline
      citescore[i]=$0
      if(citescore[i]<number)
      {
        citescore_information[count2]=a[i]
        count2=count2+1
      }
    }
  }
  if(fuhao==">")
  {
    for(i=1;i<=count1-1;i++)
    {
      "printf '"a[i]"'|awk -F; '{printf $4}'"|getline
      citescore[i]=$0
      if(citescore[i]>number)
      {
        citescore_information[count2]=a[i]
        count2=count2+1
      }
    }
  }
  for(i=1;i<=count2-1;i++)
  {
#    print citescore_information[i]
    #获取全称
    "printf '"citescore_information[i]"'|awk -F; '{print $2}'"|getline
    full_name=$0
    #获取缩写
    "printf '"citescore_information[i]"'|awk -F; '{print $3}'"|getline
    abbreviation=$0
    #获取影响因子
    "printf '"citescore_information[i]"'|awk -F; '{print $4}'"|getline
    CiteScore1 =$0
    #获取中科院分区
    "printf '"citescore_information[i]"'|awk -F; '{print $5}'"|getline
    Chinese_Academy_of_Sciences_Division=$0
    printf "第%d个期刊信息如下:\n",i
    printf "全称:%s\n",full_name
    printf "缩写:"abbreviation"\n"
    printf "影响因子(CiteScore):"CiteScore1"\n"
    printf "中科院分区:"Chinese_Academy_of_Sciences_Division"\n"
    printf "————————————————————————————————\n"

  }
}
}

实现效果如下:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值