数据库的信息搜索程序——awk实现

涉及知识点:

1.该程序所要实现的目的为:当我们在linux(centos 7)中建立了一个数据库,里面存放了各种数据,如果用一个树来简单表示一下,根节点为路易斯酸碱库,第一层为路易斯酸或路易斯碱,第二层为O原子,N原子等等一直往下,因为一个库建立起来以后,再去用可能就会忘记想要的信息在哪里,这时候就可以使用该程序帮你快速搜索并定位关键信息

2.该程序逻辑简单,主要就是为了记录平时编写的脚本,其中涉及到了awk与shell的混合使用,以及awk的人机交互

#!/bin/awk -f
BEGIN{
#以下代码是为了在此awk程序中混用sh
sh[1]="/home/wangss/database/1.sh"
system("touch -f "sh[1])

#START==================================================存储绝对路径地址库============================================================#
#address数组是存储所有根节点的文件所在的绝对地址
#address数组命名规则:address_第一层关键词名_第二层关键词名_直到抵达目标文件

#address_1
#————————————————————————————————————————————————————————————#
address_Lewisbase_LA[1]="/home/wangss/database/Lewis-base/LA/O-donor.txt"#LA(路易斯酸)以O为中心的供体文件的绝对地址
address_Lewisbase_LA[2]="/home/wangss/database/Lewis-base/LA/N-donor.txt"#LA(路易斯酸)以N为中心的供体文件的绝对地址
address_Lewisbase_LA[3]="/home/wangss/database/Lewis-base/LA/S-donor.txt"#LA(路易斯酸)以S为中心的供体文件的绝对地址
address_Lewisbase_LA[4]="/home/wangss/database/Lewis-base/LA/NHC.txt"#LA(路易斯酸)的N-杂环卡宾文件的绝对地址
address_Lewisbase_LA[5]="/home/wangss/database/Lewis-base/LA/P-donor.txt"#LA(路易斯酸)以P为中心的供体文件的绝对地址
#————————————————————————————————————————————————————————————#

#address_2
#————————————————————————————————————————————————————————————#
address_Lewisbase_LB[1]="/home/wangss/database/Lewis-base/LB/O-donor.txt"#LB(路易斯碱)以O为中心的供体文件的绝对地址
address_Lewisbase_LB[2]="/home/wangss/database/Lewis-base/LB/N-donor.txt"#LB(路易斯碱)以N为中心的供体文件的绝对地址
address_Lewisbase_LB[3]="/home/wangss/database/Lewis-base/LB/S-donor.txt"#LB(路易斯碱)以S为中心的供体文件的绝对地址
address_Lewisbase_LB[4]="/home/wangss/database/Lewis-base/LB/NHC.txt"#LB(路易斯碱)的N-杂环卡宾文件的绝对地址
address_Lewisbase_LA[5]="/home/wangss/database/Lewis-base/LA/P-donor.txt"#LA(路易斯酸)以P为中心的供体文件的绝对地址
#————————————————————————————————————————————————————————————#

#END==================================================存储绝对路径地址库============================================================#

#START=================================================获取第一层关键词===============================================================#
#开始获取想要第一层关键词
printf "请输入您想查询的第一个关键词的编号:【1.Ligand,2.待添加】:"
getline < "-"

#first_keyword保存所要的第一层关键词
first_keyword=$0
#END=================================================获取第一层关键词===============================================================#

#START=================================================获取第二层关键词===============================================================#
#1.Lewis base的第二层关键词
if(first_keyword==1)
{
  printf "请输入您想查询的第二个关键词的编号:【1.LA-ligand:(路易斯酸配体),2.LB-ligand:(路易斯碱配体)】:"
  getline < "-"
  second_keyword=$0
}

#END=================================================获取第二层关键词===============================================================#

#START=================================================获取第三层关键词===============================================================#

#1.Lewisbase_LA的第三层关键词
if(first_keyword==1)
{
  if(second_keyword==1)
  {
    printf "请输入您想查询的第三个关键字的编号:【1.O-donor,2.N-donor,3.S-donor,4.NHC,5.P-donor】:"
    getline < "-"
    third_keyword=$0
  }
}

#2.Lewisbase_LB的第三层关键词
if(first_keyword==1)
{
  if(second_keyword==2)
  {
    printf "请输入您想查询的第三个关键字的编号:【1.O-donor,2.N-donor,3.S-donor,4.NHC,5.P-donor】:"
    getline < "-"
    third_keyword=$0
  }
}

#3.未添加
#END=================================================获取第三层关键词===============================================================#

#=============================================根据获取的关键字进行路径搜索==============================================#
#第一大类的搜索:START—————————————————————————Lewis base————————————————————————#
if(first_keyword==1)#首个关键词选择的是Lewis base
{

#Lewisbase_LA
  if(second_keyword==1)
  {
    if(third_keyword==1)#O-donor  
    {
      printf "cat "address_Lewisbase_LA[1]"" > sh[1]
      system("sh " sh[1])
#      system("rm -f" sh[1])
    }
    if(third_keyword==2)#N-donor
    {
      printf "cat "address_Lewisbase_LA[2]"" > sh[1]
      system("sh " sh[1])
#      system("rm -f" sh[1])
    }
    if(third_keyword==3)#S-donor
    {
      printf "cat "address_Lewisbase_LA[3]"" > sh[1]
      system("sh " sh[1])
#      system("rm -f" sh[1])
    }
    if(third_keyword==4)#N-杂环卡宾
    {
      printf "cat "address_Lewisbase_LA[4]"" > sh[1]
      system("sh " sh[1])
#      system("rm -f" sh[1])
    }
    if(third_keyword==5)#P-donor
    {
      printf "cat "address_Lewisbase_LA[5]"" > sh[1]
      system("sh " sh[1])
#      system("rm -f" sh[1])
    }
  }

#Lewisbase_LB
  if(second_keyword==2)#第二个关键词选择是LB
  {
    if(third_keyword==1)#O-donor  
    {
      printf "cat "address_Lewisbase_LB[1]"" > sh[1]
      system("sh " sh[1])
#      system("rm -f" sh[1])
    }
    if(third_keyword==2)#N-donor
    {
      printf "cat "address_Lewisbase_LB[2]"" > sh[1]
      system("sh " sh[1])
#      system("rm -f" sh[1])
    }
    if(third_keyword==3)#S-donor
    {
      printf "cat "address_Lewisbase_LB[3]"" > sh[1]
      system("sh " sh[1])
#      system("rm -f" sh[1])
    }
    if(third_keyword==4)#N-杂环卡宾
    {
      printf "cat "address_Lewisbase_LB[4]"" > sh[1]
      system("sh " sh[1])
#      system("rm -f" sh[1])
    }
    if(third_keyword==5)#P-donor
    {
      printf "cat "address_Lewisbase_LB[5]"" > sh[1]
      system("sh " sh[1])
#      system("rm -f" sh[1])
    }
  }  
}
#END————————————————————————————Lewis base————————————————————————#

system("rm "sh[1])
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值