local palabras="palabra"
local sufix=00
aux=$(echo "$palabras" | awk '
{
split($0, chars, "")
for (i=1; i <= 5; i++) {
printf("%s", chars[i])
}
}')
sufix=$((sufix+1))
palabras=$(echo $aux$sufix)
El codigo pretende mirar en un fichero-lista, y si la palabra ya existe crea una nueva con las 5 primeras letras y añade dos numeros.local palabras="palabra"
local exists='1'
local sufix=00
until [ $exists -eq '0' ]; do
if [ $palabras = $(cat fichero | grep $palabras | awk '{split ($0, n, ":"); print n[1]}') ]; then
aux=$(echo "$palabras" | awk '
{
split($0, chars, "")
for (i=1; i <= 5; i++) {
printf("%s", chars[i])
}
}')
sufix=$((sufix+1))
palabras=$(echo $aux$sufix)
exists='1'
else exists='0'
fi
done
JanKusanagi escribió:Prueba a usar %02d en el printf.
palabras=$(echo $aux$sufix)
palabras=$(echo $aux$(printf %02d $sufix))
alohl669 escribió:tenemos "palabra"
pero "palabra" ya existe.
asi que queremos "palab01"
pero en su lugar sale "palab1"
como puedo operar sin perder ese cero?
pongamos el siguiente script:local palabras="palabra"
local sufix=00
aux=$(echo "$palabras" | awk '
{
split($0, chars, "")
for (i=1; i <= 5; i++) {
printf("%s", chars[i])
}
}')
sufix=$((sufix+1))
palabras=$(echo $aux$sufix)El codigo pretende mirar en un fichero-lista, y si la palabra ya existe crea una nueva con las 5 primeras letras y añade dos numeros.local palabras="palabra"
local exists='1'
local sufix=00
until [ $exists -eq '0' ]; do
if [ $palabras = $(cat fichero | grep $palabras | awk '{split ($0, n, ":"); print n[1]}') ]; then
aux=$(echo "$palabras" | awk '
{
split($0, chars, "")
for (i=1; i <= 5; i++) {
printf("%s", chars[i])
}
}')
sufix=$((sufix+1))
palabras=$(echo $aux$sufix)
exists='1'
else exists='0'
fi
done
KePeRHeLL escribió:alohl669 escribió:tenemos "palabra"
pero "palabra" ya existe.
asi que queremos "palab01"
pero en su lugar sale "palab1"
como puedo operar sin perder ese cero?
pongamos el siguiente script:local palabras="palabra"
local sufix=00
aux=$(echo "$palabras" | awk '
{
split($0, chars, "")
for (i=1; i <= 5; i++) {
printf("%s", chars[i])
}
}')
sufix=$((sufix+1))
palabras=$(echo $aux$sufix)El codigo pretende mirar en un fichero-lista, y si la palabra ya existe crea una nueva con las 5 primeras letras y añade dos numeros.local palabras="palabra"
local exists='1'
local sufix=00
until [ $exists -eq '0' ]; do
if [ $palabras = $(cat fichero | grep $palabras | awk '{split ($0, n, ":"); print n[1]}') ]; then
aux=$(echo "$palabras" | awk '
{
split($0, chars, "")
for (i=1; i <= 5; i++) {
printf("%s", chars[i])
}
}')
sufix=$((sufix+1))
palabras=$(echo $aux$sufix)
exists='1'
else exists='0'
fi
done
Hola, no sé si lo quieres hacer con AWK por alguna razón en concreto, pero con cut puedes cortar por caracteres simplificando parte del código que tienes.
Un saludo.