Aqui está uma solução rápida para se livrar do espaço em branco na sua variável $date_format
:
date_format=${date_format//[[:space:]]/}
echo "$date_format"
Eu tenho três arquivos de texto:
ano:
2014
2014
2014
mês:
03
03
03
dia:
08
09
10
Eu uso essa função para combiná-los em uma data:
function pl {
sed -n "p"
}
for (( j=1; j <= 3; j++ ))
do
yr=$(pl $j year)
mnth=$(pl $j month)
dy=$(pl $j day)
date_format=$yr-$mnth-$dy
echo $date_format
done
Minha saída, no entanto, parece:
2014 -03-08
2014 -03-09
2014 -03-10
Eu preciso remover o espaço entre "2014" e "-". Os outros códigos usam o $ date_format, portanto, não deve haver espaço entre os caracteres.
Aqui está uma solução rápida para se livrar do espaço em branco na sua variável $date_format
:
date_format=${date_format//[[:space:]]/}
echo "$date_format"
Se você estiver obtendo essa saída, terá um espaço à direita no arquivo year
. Isso funciona exatamente como esperado, se você não fizer isso:
$ printf "2013\n2013\n2013\n" > year; printf "03\n03\n03\n" "03" > month; printf "08\n09\n10\n" > day
$ for (( j=1; j <= 3; j++ )); do
yr=$(pl $j year)
mnth=$(pl $j month)
dy=$(pl $j day)
date_format=$yr-$mnth-$dy
echo $date_format
done
2013-03-08
2013-03-09
2013-03-10
E, se você adicionar um espaço à direita:
$ printf "%s2013 \n2013 \n2013 \n" > year
$ for (( j=1; j <= 3; j++ )); do
> yr=$(pl $j year)
> mnth=$(pl $j month)
> dy=$(pl $j day)
> date_format=$yr-$mnth-$dy
> echo $date_format
> done
2013 -03-08
2013 -03-09
2013 -03-10
Portanto, a solução mais simples é remover o espaço do seu arquivo de entrada:
sed -i 's/ *$//' year
Note, no entanto, que você está usando uma solução muito complexa para um problema muito simples:
$ paste -d"-" year month day | tr -d ' '
2013-03-08
2013-03-09
2013-03-10
Remover tudo após o ano / mês / dia diretamente no comando sed
;
Na função pl()
, substitua
sed -n "p"
com
sed -n "s/\([0-9]*\).*//p"