행 일치는 특정 매개변수를 트리거합니다.

행 일치는 특정 매개변수를 트리거합니다.

다음 두 가지 유형의 콘텐츠가 포함된 파일이 있습니다.

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 "\""이를 변경해야 합니다.

관련 정보