Linux/Unix Shell Scripting - Error con sed...

 
Vista:
sin imagen de perfil

Error con sed...

Publicado por Carlos (5 intervenciones) el 16/08/2021 08:56:34
Hola a ver si podéis orientarme tengo un fichero de texto con este formato

15/08/2021 17:00:01 texto aleatorio
15/08/2021 17:22:01 texto aleatorio
15/08/2021 17:36:01 texto aleatorio
15/08/2021 18:01:01 texto aleatorio
15/08/2021 18:06:01 texto aleatorio
15/08/2021 18:26:01 texto aleatorio
15/08/2021 18:48:01 texto aleatorio
15/08/2021 18:54:01 texto aleatorio
15/08/2021 18:54:01 texto aleatorio
16/08/2021 17:00:01 texto aleatorio
16/08/2021 17:22:01 texto aleatorio
16/08/2021 17:36:01 texto aleatorio
Lo que quiero es que si hoy es día 16, me borré las líneas del día anterior (15)

Tengo este script en sh

1
2
3
4
5
#!/bin/sh
one=1
dataset_date=`date`
today=`date -d "$dataset_date - $one days" +%d`
sed "/^$today/ d" file.txt > file1.txt

Si ejecutó en Shell me funciona
1
2
3
4
one=1
dataset_date=`date`
today=`date -d "$dataset_date - $one days" +%d`
sed "/^$today/ d" file.txt > file1.txt




Pero si lo ejecutó como sh script.sh. no me da error, me crear un file1.txt no legible.
¿Alguna sugerencia?
¿Algo para que me lo dejé procesado en el mismo fichero en vez de file1.txt?

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Error con sed...

Publicado por Carlos (5 intervenciones) el 16/08/2021 09:34:27
Si hago ls me aparece así

'file1.txt'$'\r'
No le veo explicación...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error con sed...

Publicado por tpa10 (1 intervención) el 16/08/2021 11:19:46
raro raro

NO parece que sea fallo de sed sino del sh, dado que te está generando un fichero con un nombre "raro".

Te sugiero que hagas estas pruebas, aunque te parezcan tontas, mira los resultados...
1.-
cat file.txt > file2.txt
a ver si aún te sale el fichero con ese nombre raro.

2.-
cat file.txt | sed "/^$today/ d" > file3.txt
a ver si aún te sale el fichero con ese nombre raro.

Observa que he puesto file2.txt y file3.txt para diferenciarlo del tuyo anterior.

Si te siguen saliendo nombres raro el problema no está en el "sed" (por la prueba 1.-) sino en el sh.
Si no te salen nombres raros, verifica el contenido de file3.txt a ver si ese el que te va bien...
suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Error con sed...

Publicado por Carlos (5 intervenciones) el 16/08/2021 11:46:35
Hola

1.-
cat file.txt > file2.txt
a ver si aún te sale el fichero con ese nombre raro.
Sale file2.txt legible
2.-
cat file.txt | sed "/^$today/ d" > file3.txt
a ver si aún te sale el fichero con ese nombre raro.
Sale bien y elimina las lineas que queria pero si dejo el código así me sigue pasando lo mismo
1
2
3
4
5
6
#!/bin/sh
one=1
dataset_date=`date`
today=`date -d "$dataset_date - $one days" +%d`
echo $today
cat file.txt | sed "/^$today/ d" > file1.txt

Muy raro si.... Gracias por responder
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Error con sed...

Publicado por Carlos (5 intervenciones) el 16/08/2021 17:12:38
Vale ya resolví el guardado del archivo.
Cuando algo es raro es que algo está mal ejecutado.
Subi el fichero por FTP le di permisos, pero lo guardaba raro


Cree el sh de nuevo , sudo nano borra.sh
Pegue esto
one=1
dataset_date=`date`
today=`date -d "$dataset_date - $one days" +%d`
sed "/^$today/ d" file.txt > file1.txt

Guardo y doy permisos
chmod +x borra.sh

Ahora ya me guarda un file1.txt correcto
Y elimina las líneas!!
Lo raro es que si uso solo el día 15 me va
Pero si uso la fecha completa no. 15/08/2021
Pero me vale...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Error con sed...

Publicado por Carlos (5 intervenciones) el 17/08/2021 07:51:38
Finalmente lo resolví usando la fecha completa (15/08/2021 y no solo el día 15) y escribiéndolo en el mismo fichero

1
2
3
4
5
#!/bin/sh
one=1
dataset_date=`date`
today=`date -d "$dataset_date - $one days" +%d/%m/%G`
echo "$(grep -v "$today" file.txt)" > file.txt
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar