涉及知识点:
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])
}