Uso ubuntu 14.4
e intento redirigir la salida del grep
comando 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.4
y 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 > file
entonces no funciona. No puede usar el mismo archivo como entrada y salida para grep.bash: ../f.txt: Permission denied
grep
comandogrep pattern file > file
ya 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' file
sed -i -n 's/.*\(pattern\).*/\1/p' file
sed
sintaxis.Puede usar el
--exclude
campo en sugrep
comando de la siguiente manera:fuente
myfile
sea ú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