解析文件中的每一行,并将它们添加到shell脚本

时间:2015-07-20 08:00:14

标签: shell

我一直致力于开发一个init.d脚本,该脚本将在机器停止和启动时运行。该脚本与Tomcat服务器一起运行。该脚本将解析每个tomcat实例的配置文件,并将它们添加到名为“InstanceData”的临时文件中。内容将是这样的事情:

FINC-A1:XXXX979:XXXX   
FINC-B1:XXXX979:XXXX  
FXE-A1:XXXX975:XXXX  
FXE-B1:XXXX975:XXXX  
INL-A1:XXXX994:XXXX  
INL-B1:XXXX994:XXXX  
IVR-A1:XXXX984:XXXX  
IVR-B1:XXXX984:XXXX  
LWSP-A1:XXXX982:XXXX  
LWSP-B1:XXXX982:XXXX  
LWSP-C1:XXXX982:XXXX   
MFS-A1:XXXX989:XXXX   
MFS-I1:XXXX989:XXXX  
PHYRES-A1:XXXX987:XXXX  
PHYRES-B1:XXXX987:XXXX   

每一行都是一个服务器,用户名和机器用冒号分隔。现在我的脚本在执行停止时工作正常。问题是现在我想要同时启动域的相同服务器。例如:

FINC-A1:XXXX979:XXXX   
FINC-B1:XXXX979:XXXX

两者都属于FINC域,现在我想编写一个脚本,该脚本将从文件中获取相同的域并同时启动它们。我的问题是提取属于同一个域的实例,如FINDIVR。请帮我编写脚本。感谢所有人提前。

2 个答案:

答案 0 :(得分:0)

如果您想从' instanceData'中提取归档那些属于域的实例,例如FINC您可以执行以下操作:

如果你想要整行:

cat instanceData | awk '/FINC-.*/ { print $0 }'

结果:

FINC-A1:XXXX979:XXXX   
FINC-B1:XXXX979:XXXX  

如果您只想要第一个字段:

cat instanceData | awk -F: '/FINC-.*/ { print $1 }'

结果:

 FINC-A1
 FINC-B1

答案 1 :(得分:0)

Ook,我能够编写适合我的脚本

output = $(cat instanceData.txt | awk'{print $ 1}'| cut -d'-'-f1 | uniq)

表示输出中的x;   做 for cat instanceData.txt | grep $x中的ref_num   做
    echo“对$ ref_num执行操作”
   做过
完成了

感谢您的所有回复。