다음 두 가지 유형의 콘텐츠가 포함된 파일이 있습니다.
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 "\""
이를 변경해야 합니다.