我有一个包含以下两种类型内容的文件。
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 "\""
改为。