Je suis en une ligne de commande comme ceci:Changer le séparateur de ligne sed en NUL pour agir comme préfiltre "xargs -0"?
filename_listing_command | xargs -0 action_command
Où filename_listing_command
utilise des octets nuls pour séparer les fichiers - c'est ce que xargs -0
veut consommer.
Le problème est que je veux filtrer certains fichiers. Quelque chose comme ceci:
filename_listing_command | sed -e '/\.py/!d' | xargs ac
mais j'ai besoin d'utiliser xargs -0
.
Comment changer le séparateur de ligne que sed veut de newline à NUL?
Votre solution 'sed' continue de fonctionner sur \ n, donc si un nom de fichier contient' \ n' et se termine par '.py', seule la partie après' \ n' sera supprimée. Par exemple, 'printf '% s \ 0' $ 'abc \ ndef.py' | sed 's/[^ \ x0] * \. py \ x0 // g'' affichera 'abc \ n'. Cela annule le but de l'utilisation de terminateurs NULL. – musiphil
Dans mon cas, ma commande (pour '\ n' terminators) était' sed -ne 's/^ UU // p'', et je ne pouvais pas la convertir facilement en une commande 'grep'. – musiphil
@musiphil: Essayez: 'grep -PzZo '^ (? <= UU). *'' –