Usar subcadena con xargs en cygwin

Intento utilizar la funcionalidad de subcadenas con la parte {} de una sentencia de xargs canalizada en cygwin. Aquí está mi command sin la subcadena:

 git branch -r --merged master | grep "feature/" | xargs -I {} git push origin :{} 

Esto es casi lo que necesito que haga, pero la cadena de commands generada por las dos primeras partes tiene un "origen /" frente a ella. Así que solo necesito cortar esto. Leí sobre usar ${str:n} para subcadena. Así es como estoy tratando de usarlo:

 git branch -r --merged master | grep "feature/" | xargs -I {} git push origin :${{}:7} 

pero recibo el post de error "sustitución incorrecta" porque parece que ese command necesita una variable y no le gusta el {} . Sé que probablemente podría evitar esto escribiendo un simple script bash para iterar sobre la list generada por la git branch -r --merged master | grep "feature/" git branch -r --merged master | grep "feature/" pero supongo que hay una pequeña syntax que podría cambiar para que funcione.

{} no es una variable de shell. Puede pasarlo a la línea de command bash -c :

 git branch -r --merged master | grep "feature/" | xargs -I {} bash -c 'git push origin ":${1#origin/}"' - {} 

${1#origin/}" eliminará el origin/ al comienzo de $1 .