Estoy intentando el siguiente comando en bash-4.3
$history | grep history | xargs cut -d ' ' -f1
pero obtengo el siguiente error del delimitador del que no puedo deshacerme
corte: el delimitador debe ser un solo carácter
Intenté eliminar xargs pero da un resultado en blanco. La idea es obtener un número de comando particular del historial y luego pasarlo al historial -d para eliminar ese comando particular del historial. Aquí está solo la salida de
history | grep history
498 history | grep history | cat | xargs cut -d " " -f1
500 history | grep history | cat | xargs awk -ifs " "
501 history | grep history | xargs cut -d " " -f1
502 history | grep history | xargs cut -d '0' -f1
503 history | grep history | xargs cut -d 0 -f1
504* history |
505 history | ack history | xargs cut -d ' ' -f1
506 history | ack history | xargs cut -d ' ' -f1
507 history | ack history | cut -d ' ' -f1
508 history | grep history
grep
command-history
cut
usuario2065276
fuente
fuente
xargs
. Aunque no estoy seguro de lo que este comando debe hacer ...awk
para obtener el primer campo. Algo así comohistory | awk '/command_to_search_for/ { print $1}'
. Eso devolverá el número de historial de "command_to_search_for"cut -d' '
se dividirá en espacios ... pero hay múltiples espacios, por-f1
lo que probablemente solo devolverá un espacio.awk {print $1}
Es más fácil obtener el primer campo. Entonces podría hacerlo,history | grep command_to_search_for | awk '{print $1}'
pero eso es más simple escrito con elhistory | awk
comando que sugerí.Respuestas:
Algunas explicaciones:
xargs
No es aplicable aquí. Lo que hace es tomar una entrada estándar y pasarlos como argumentos a un comando. Sin embargo,cut
funciona con entrada estándar de forma predeterminada, que es lo que desea.history | grep history | xargs cut […]
termina creando comandos comocut […] [some content from the Bash history]'
. Para procesar una serie de números de línea impresos con una nueva línea después de cada uno, querrá usar unwhile read
bucle:some_command | cat | other_command
Es completamente redundante.cat
simplemente copia su entrada estándar a la salida estándar de forma predeterminada.fuente
Prueba este comando
NR==1
:awk
leerá las celdas en la primera fila de la tabla, luego imprime las columnas relevantes para "xargs cut -d '' -f1" que son 8-12fuente