Sto correndo una riga di comando in questo modo:Cambia il separatore di linee sed a NUL per agire come prefiltro "xargs -0"?
filename_listing_command | xargs -0 action_command
Dove filename_listing_command
usa byte nulli per separare i file - questo è ciò che xargs -0
vuole consumare.
Il problema è che voglio filtrare alcuni file. Qualcosa di simile a questo:
filename_listing_command | sed -e '/\.py/!d' | xargs ac
ma ho bisogno di usare xargs -0
.
Come si modifica il separatore di linea che sed desidera da newline a NUL?
La soluzione 'sed' si rompe ancora su' \ n', quindi se un nome file contiene '\ n' e finisce in' .py', solo la parte dopo '\ n' sarà cancellata. Ad esempio, 'printf '% s \ 0' $ 'abc \ ndef.py' | sed 's/[^ \ x0] * \. py \ x0 // g'' stamperà 'abc \ n'. Ciò annulla lo scopo dell'utilizzo di terminatori nulli. – musiphil
Nel mio caso, il mio comando (per '\ n' terminators) era' sed -ne '/^UU // p'', e non potevo convertirlo facilmente in un comando 'grep'. – musiphil
@musiphil: Prova: 'grep -PzZo '^ (? <= UU). *'' –