%20y%20el%20comando%20del%20archivo%20.bash_history%20y%20guardarlo%20en%20una%20l%C3%ADnea.%20Solo%20deber%C3%ADa%20mostrar%20el%20comando%20con%20el%20tiempo%20de%20%C3%A9poca.png)
por ejemplo (archivo .bash_history)
cd Fortigate_Report/
ll
exit
#1512031841
history>set1
#1512031849
history>set2
#1512031864
vi comm -23 <(sort set1) <(sort set2)
#1512031877
comm -23 <(sort set1) <(sort set2)
#1512031892
comm -23 <(sort set2) <(sort set1)
#1512031971
- esto debe copiarse en otro archivo, por ejemplo (newfile.txt o cualquier archivo nuevo)
- el archivo debe ignorar el comando que no tiene tiempo de época
- Y deberían ignorar la época del tiempo que no tiene comando.
es decir, la salida del nuevo archivo debería ser así
#1512031841 history>set1
#1512031849 history>set2
#1512031864 vi comm -23 <(sort set1) <(sort set2)
#1512031877 comm -23 <(sort set1) <(sort set2)
#1512031892 comm -23 <(sort set2) <(sort set1)
Respuesta1
Con sed
:
sed -n '/^#[0-9]\{1,\}$/N;s/\n/ /p' < file > newfile
Respuesta2
testdata
imprimirá sus datos de ejemplo...
$ testdata() { cat<<dog
cd Fortigate_Report/
ll
exit
#1512031841
history>set1
#1512031849
history>set2
#1512031864
vi comm -23 <(sort set1) <(sort set2)
#1512031877
comm -23 <(sort set1) <(sort set2)
#1512031892
comm -23 <(sort set2) <(sort set1)
#1512031971
dog
}
...que luego se canalizará awk
y solo reaccionará si ve una marca de tiempo. Luego, se leerá e imprimirá la siguiente línea con el prefijo de la marca de tiempo vista antes:
$ testdata | awk '/^#/ && (getline L) > 0 { print $0, L }'
#1512031841 history>set1
#1512031849 history>set2
#1512031864 vi comm -23 <(sort set1) <(sort set2)
#1512031877 comm -23 <(sort set1) <(sort set2)
#1512031892 comm -23 <(sort set2) <(sort set1)