Я бы использовал perl
и решайте это следующим образом:
#!/usr/bin/env perl
use strict;
use warnings;
while ( <> ) {
my ( @date ) = m/(\d{4})\D(\d{2})\D(\d{2})/;
my $date_str = join "-", @date;
print $date_str,"\n";
}
Он сопоставляет «4 цифры», «2 цифры», «2 цифры» и переформатирует их, чтобы они были разделены -
. Однако предполагается, что ваши номера расположены «правильно».
В оболочке установка переменных будет выполняться с помощью:
var1=toto
var2="$(echo toto | othercommand)"
У вас не может быть пробелов между вашим именем переменной, символом равенства и значением, которое вы присваиваете своей переменной.
Затем, чтобы отобразить переменную, вы должны сделать:
echo $var
echo "$var"
echo "${var}"
Символ &
в bash / sh используется для «управления заданиями», что является еще одной темой, ...
Вместо этого начните с использования следующего, расскажите нам, как это происходит:
#! /bin/sh
while true;do
var="$(echo "RDTEMP1" | netcat -q2 sanderpi 5033)"
echo "$var"
echo "$(date +%Y-%m-%d%t%H:%M:%S)"
done
Назначение переменных в оболочках не требует пробелов вокруг присваивающего (например, =
).
Правильно:
var=$(frobnify xyz)
Неправильно:
var = $(frobnify xyz)