Respuestas:
Haga una evaluación de cortocircuito después de grep:
grep -q 'search_pattern' /file && : >/newfile
grep -qno produce salida en STDOUT, solo sale con estado de salida 0si el patrón se encuentra en el archivo
Si se encuentra el patrón ( &&), cree un archivo /newfilepor : >/newfile.
También podría optar por el touch /newfileenfoque habitual , o en bashuna redirección vacía, también >/newfilelo haría.
Solo para tener en cuenta, si el archivo ya existe, entonces touchsolo cambiaría las marcas de tiempo relevantes sin truncar el archivo. Y la redirección vacía >/newfileno se admite en todos los shells sobre la marcha (por ejemplo, en zsh), donde debe enviar manualmente el EOF.
:?
:es la abreviatura de true, es un comando no operativo que siempre sale con el estado de salida 0.
Solo por diversión:
python3 -c "if 'string' in open('logfile').read(): open('newfile', 'wt')"
donde 'string'se reemplaza por la cadena (condición), 'logfile'se reemplaza por la ruta al archivo de registro, 'newfile'se reemplaza por la ruta real al archivo a crear, todo entre comillas simples, probablemente en el ejemplo.
Puedes usar awk con su system()comando. Si /pattern/se encuentra el, el bloque de código {}se ejecutará, en este caso llamaremos a touch /tmp/my_file.txttravés del system()comando.
El siguiente ejemplo muestra la creación de un archivo temporal si hay mi usuario presente /etc/passwd.
$ awk '/xieerqi/{system("touch /tmp/my_file.txt")}' /etc/passwd
$ ls -l /tmp/my_file.txt
-rw-rw-r-- 1 xieerqi xieerqi 0 1月 25 07:58 /tmp/my_file.txt
Alternativamente, podríamos usar la redirección al archivo:
awk '/xieerqi/{f="/tmp/my_file.txt";print "" > f;close(f)}' /etc/passwd
No dice si desea un nuevo archivo vacío o si necesita un procesamiento más complejo para crear el archivo.
Si es lo primero, la respuesta de @heemayl es acertada.
De lo contrario, use una instrucción if:
if grep -q 'search_pattern' /file
then
# Create your file here
fi
greppara buscar. La-qopción suprimirá todos los resultados y devolverá la coincidencia / no coincidencia a travésgrepdel código de salida, que es fácilmente comprobable.