Sí, se puede hacer utilizando el comando grep en conjunto con awk para filtrar la información deseada del resultado de nmap. Aquí te dejo un ejemplo de cómo podrías hacerlo en un script de bash:
#!/bin/bash
# Ejecutar nmap y guardar el resultado en un archivo temporal
nmap -sV localhost > temp.txt
# Filtrar la información deseada del archivo temporal utilizando grep y awk
cat temp.txt | grep -oP '\d+\/\w+\s+open\s+\w+' | awk '{print $3, $4}'
# Eliminar el archivo temporal
rm temp.txt
El comando grep -oP '\d+\/\w+\s+open\s+\w+' filtra todas las líneas que contienen información de puertos abiertos y sus servicios asociados. Luego, utilizando awk, se imprimen las columnas 3 y 4 de cada línea, que corresponden a la versión del servicio. El archivo temporal se utiliza para evitar que se muestren otros resultados de nmap en la salida.
Este es solo un ejemplo básico, dependiendo de la versión de nmap y la distribución de Linux que estés utilizando, puede que necesites ajustar el comando grep para que coincida con el formato de salida de nmap.