Puedes hacer ambas cosas con el dialecto SQLite http://www.gdal.org/ogr_sql_sqlite.html . El dialecto SQLite le ofrece todas las posibilidades de SQLite http://www.sqlite.org/lang.html y SpatiaLite http://www.gaia-gis.it/gaia-sins/spatialite-sql-latest.html . Sin embargo, no estoy seguro de si dos vértices en el mismo lugar hacen que las geometrías no sean válidas.
Para eliminar las geometrías vacías:
ogr2ogr -f "ESRI Shapefile" -dialect sqlite -sql "select * from input where geometry is not null" output.shp input.shp
Para corregir geometrías no válidas al mismo tiempo la parte -sql se hace un poco más larga porque hay que escoger los atributos uno por uno a la consulta
ogr2ogr -f "ESRI Shapefile" -dialect sqlite -sql "select ST_MakeValid(geometry) as geometry, attr_1, attr_2, attr_3, attr_4 from input where geometry is not null" output.shp input.shp
Si resulta que los vértices repetidos no se consideran errores, se pueden eliminar simplificando las geometrías con una tolerancia de cero
ogr2ogr -f "ESRI Shapefile" -dialect sqlite -sql "select ST_Simplify(geometry,0) as geometry, attr_1, attr_2, attr_3, attr_4 from input where geometry is not null" output.shp input.shp
Los comandos no están probados pero editaré la respuesta si no te funcionan.