行匹配触发特定参数

行匹配触发特定参数

我有一个包含以下两种类型内容的文件。

QJKLJFLHLKJDGFIUD 03:12:23  
JHKJFDGDSFGDFGHDF 03:15:45  
HJIK  
ASDSdSADSADSSADSA 03:30:34  
DFDF  
KWQA

我有 2 个二进制文件。一个在本地计算机上,另一个在远程计算机上。

如果该行包含时间戳,我必须调用本地二进制文件并将该行作为参数传递给二进制文件。

如果该行不包含时间戳,我必须调用远程二进制文件并将该行作为参数传递给二进制文件。

我怎样才能实现这个目标?

答案1

假设只能有一个或两个字段,并且具有两个字段的所有行都包含时间戳,您可以在以下位置执行此操作bash

while read string date; do 
   ## If there are two fields, $string and $date, launch remote command
   if [[ $date ]] ; 
     then ssh user@remote kimera "$string $date"; 
   ## If there is only one field, no date, launch the local command
   else kimera $string; fi; 
done < file

如果您可以有不同数量的字段并且需要实际检查 NN:NN:NN 格式的时间戳,请改用以下命令:

perl -ne 'chomp; 
          if(/\d+:\d+:/){system("ssh user@remote kimera $_" )}
          else{system("kimera $_" )}
' file

答案2

awk 'NF==2 {system("/bin/echo " $0); next;}
  {system("/bin/echo " $0 " | rev"); next;}' inputfile

编辑1:

awk 'NF==2 {system("ssh user@remote kimera " $0); next;}
  {system("kimera " $0); next;}' inputfile

如果kimera需要一个参数,那么你需要... kimera \" $0 "\""改为。

相关内容