行一致は特定のパラメータをトリガします。

行一致は特定のパラメータをトリガします。

次の2種類のコンテンツを含むファイルがあります。

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

2つのバイナリファイルがあります。 1つはローカルコンピュータにあり、もう1つはリモートコンピュータにあります。

行にタイムスタンプが含まれている場合は、ローカルバイナリを呼び出して行をバイナリにパラメータとして渡す必要があります。

行にタイムスタンプが含まれていない場合は、リモートバイナリを呼び出して、その行をバイナリにパラメータとして渡す必要があります。

この目標をどのように達成できますか?

ベストアンサー1

1つまたは2つのフィールドしか存在できず、両方のフィールドを含むすべての行にタイムスタンプが含まれていると仮定すると、次のことができます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

おすすめ記事