Uso ubuntu 14.4e intento redirigir la salida del grepcomando a un archivo, pero sigo recibiendo este error:
grep: input file 'X' is also the output
Busqué este problema y descubrí que se trataba de un error ubuntu 12.4y no hay ninguna descripción, ¿alguien puede ayudarme a resolver este problema?
Ejecuto el siguiente comando:
grep -E -r -o -n r"%}(.*){%" > myfile
shell
ubuntu
command-line
grep
io-redirection
Kasramvd
fuente
fuente

grep pattern file > fileentonces no funciona. No puede usar el mismo archivo como entrada y salida para grep.bash: ../f.txt: Permission deniedgrepcomandogrep pattern file > fileya ve el archivo vacío, por lo que no tiene nada como entrada. Sin embargo, si usa en>>lugar de>, el archivo no está vacío, pero grep arroja un error de todos modos, ya que puede conducir al procesamiento recursivo de la misma línea (patrón) una y otra vez.Respuestas:
No es posible usar el mismo archivo como entrada y salida para
grep. Puede considerar las siguientes alternativas:archivo temporal
sed
poner todo el archivo en la variable (no es una idea brillante para archivos grandes)
fuente
sed -i '/pattern/!d' filesed -i -n 's/.*\(pattern\).*/\1/p' filesedsintaxis.Puede usar el
--excludecampo en sugrepcomando de la siguiente manera:fuente
myfilesea único, ya que solo se aplica al nombre base del archivo. No desea omitir archivos con el mismo nombre en otros directorios.Encontré un camino en bash:
cat >> IN_OUTPUT_FILE <<< "$(grep something IN_OUTPUT_FILE)"El comando
<<<"..."se ejecutará primero.fuente