
La entrada es un archivo (text.txt) que contiene las siguientes líneas de texto (todos los espacios en blanco son caracteres de espacio):
2016-10-24 10:25:48.939279-0400 0x63a55 Info 0x0 1416 backupd: (TimeMachine) [com.apple.TimeMachine.TMLogInfo] Found 2735 files (298.6 MB) needing backup
2016-10-24 10:25:48.954707-0400 0x63a55 Info 0x0 1416 backupd: (TimeMachine) [com.apple.TimeMachine.TMLogInfo] 6.08 GB required (including padding), 1.2 TB available
2016-10-24 10:27:56.721350-0400 0x63a55 Info 0x0 1416 backupd: (TimeMachine) [com.apple.TimeMachine.TMLogInfo] Copied 3128 items (283.1 MB) from volume Macintosh HD. Linked 5756.
2016-10-24 10:27:59.652854-0400 0x63a55 Info 0x0 1416 backupd: (TimeMachine) [com.apple.TimeMachine.TMLogInfo] Created new backup: 2016-10-24-102758
2016-10-24 10:27:59.638560-0400 0x64abb Error 0x0 52 UserEventAgent: (TimeMachine) [com.apple.TimeMachine.TMLogError] Failed to send message because the port couldn't be created.
2016-10-24 10:28:00.545654-0400 0x63a55 Error 0x0 1416 backupd: (TimeMachine) [com.apple.TimeMachine.TMLogError] Could not back up OS X Recovery to /Volumes/BackupA/Backups.backupdb: Error Domain=NSCocoaErrorDomain Code=-69830 "Failed to get info for unmounted Recovery partition (error -69830): This operation requires an unmounted disk" UserInfo={NSLocalizedDescription=Failed to get info for unmounted Recovery partition (error -69830): This operation requires an unmounted disk}
Del ejemplo anterior quiero producirsolola marca de fecha/hora seguida de todo el texto después del último delimitador de corchetes.
Esto es lo que quiero del ejemplo anterior:
2016-10-24 10:25:48 Found 2735 files (298.6 MB) needing backup
2016-10-24 10:25:48 6.08 GB required (including padding), 1.2 TB available
2016-10-24 10:27:56 Copied 3128 items (283.1 MB) from volume Macintosh HD. Linked 5756.
2016-10-24 10:27:59 Created new backup: 2016-10-24-102758
2016-10-24 10:27:59 Failed to send message because the port couldn't be created.
2016-10-24 10:28:00 Could not back up OS X Recovery to /Volumes/BackupA/Backups.backupdb: Error Domain=NSCocoaErrorDomain Code=-69830 "Failed to get info for unmounted Recovery partition (error -69830): This operation requires an unmounted disk" UserInfo={NSLocalizedDescription=Failed to get info for unmounted Recovery partition (error -69830): This operation requires an unmounted disk}
Puedo usarcortar, pero solo obtiene cosas después del delimitador.
Por ejemplo este:
cat ~/Desktop/test.txt | grep TimeMachine | rev | cut -d']' -f1 | rev
... omite la marca de tiempo:
Found 2735 files (298.6 MB) needing backup
6.08 GB required (including padding), 1.2 TB available
Copied 3128 items (283.1 MB) from volume Macintosh HD. Linked 5756.
Created new backup: 2016-10-24-102758
Failed to send message because the port couldn't be created.
Could not back up OS X Recovery to /Volumes/BackupA/Backups.backupdb: Error Domain=NSCocoaErrorDomain Code=-69830 "Failed to get info for unmounted Recovery partition (error -69830): This operation requires an unmounted disk" UserInfo={NSLocalizedDescription=Failed to get info for unmounted Recovery partition (error -69830): This operation requires an unmounted disk}
Puedo usar esto
cat ~/Desktop/test.txt | grep TimeMachine | cut -c 1-19,140-
... pero las ubicaciones de las columnas variables son un problema (observe las dos últimas líneas):
2016-10-24 10:25:48 Found 2735 files (298.6 MB) needing backup
2016-10-24 10:25:48 6.08 GB required (including padding), 1.2 TB available
2016-10-24 10:27:56 Copied 3128 items (283.1 MB) from volume Macintosh HD. Linked 5756.
2016-10-24 10:27:59 Created new backup: 2016-10-24-102758
2016-10-24 10:27:59ogError] Failed to send message because the port couldn't be created.
2016-10-24 10:28:00] Could not back up OS X Recovery to /Volumes/BackupA/Backups.backupdb: Error Domain=NSCocoaErrorDomain Code=-69830 "Failed to get info for unmounted Recovery partition (error -69830): This operation requires an unmounted disk" UserInfo={NSLocalizedDescription=Failed to get info for unmounted Recovery partition (error -69830): This operation requires an unmounted disk}
Tengo la sensación de que no hay forma de usarlo.cortarhacer lo que quiero, porque quiero combinar la opción -c con la opción -d, y no puedo entenderlo. ¿Adónde debería ir desde aquí?
Respuesta1
Para responder a su pregunta exacta, esto no es una buena opción para usar cut
por las siguientes razones:
- Hay varios delimitadores.
- Puede haber un número variable de campos.
Usando Awk:
awk -F']' '{print substr($0,1,19), $NF}' text.txt
Usando SED:
sed 's/^\(....-..-.. ..:..:..\).*\]\([^]]*\)$/\1 \2/' text.txt
Yo preferiría el método Awk.
Respuesta2
Otra sed
solución:
$ sed -E 's/^([^.]+).*\](.*)/\1\2/' ip.txt
2016-10-24 10:25:48 Found 2735 files (298.6 MB) needing backup
2016-10-24 10:25:48 6.08 GB required (including padding), 1.2 TB available
2016-10-24 10:27:56 Copied 3128 items (283.1 MB) from volume Macintosh HD. Linked 5756.
2016-10-24 10:27:59 Created new backup: 2016-10-24-102758
2016-10-24 10:27:59 Failed to send message because the port couldn't be created.
2016-10-24 10:28:00 Could not back up OS X Recovery to /Volumes/BackupA/Backups.backupdb: Error Domain=NSCocoaErrorDomain Code=-69830 "Failed to get info for unmounted Recovery partition (error -69830): This operation requires an unmounted disk" UserInfo={NSLocalizedDescription=Failed to get info for unmounted Recovery partition (error -69830): This operation requires an unmounted disk}
^([^.]+)
capturar todos los que no sean.
caracteres desde el inicio de la línea.*\]
ignorar todo hasta el último]
en la fila(.*)
capturar personajes restantes\1\2
primer y segundo grupo capturado- Nota: Algunas
sed
versiones utilizan-r
en lugar de-E
la opción de expresión regular extendidased 's/^\([^.]\+\).*\]\(.*\)/\1\2/'
si la opción de expresión regular extendida no está disponible
Respuesta3
sed 's/\(:[0-9]*\).[0-9 \-]*[a-z0-9]x[0-9a-z]*[ ]*[a-zA-Z]*[ ]*[0-9x]*[0-9 ]*/\1 /'
EDITAR: el sed utiliza una coincidencia de patrones diferida;
- todo lo que esté entre corchetes () se imprime en \1
- cualquier otra cosa que coincida se ignora
- cualquier cosa después queda intacta