Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Intuitive find and replace CLI (sed alternative) (github.com/chmln)
58 points by jcbhmr 4 months ago | hide | past | favorite | 8 comments


For cases I am not 100% sure I want to replace all occurrences, I prefer scooter: https://github.com/thomasschafer/scooter


The sed extraction example is more complicated than it needs to be:

    echo "sample with /path/" | sed -E 's|.*(/.*/)|\1|g'
The search/replace separator doesn't have to be '/'.

I can't see myself using this for a performance bump given that I already know vi, thus sed expressions.


The newline replacement stopped me in my tracks:

  sed ':a;N;$!ba;s/\n/,/g'
Nobody does that with sed, when there are way simpler alternatives, like paste and tr.


Regardless of the appeal to unix philosophy in their docs, sd has never stuck with me because it doesn't natively support replace across a project/ multiple files, and that's what you always want to do. Instead I pipe `rg -R --json` output into a script (rg does do replacement, but only on the stdout, not in-place)


I'm not sure I understand what you're saying. You can pass a list of files to sd, `sd before after **/*.py` to replace in all the python files in your project. That's about as native of a replace across multiple files you could possibly want.


Use find?

    find -exec sd before after \;


If you use fish, have a look at `string replace` as a built-in and related [0].

[0]: https://fishshell.com/docs/current/cmds/string.html





Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: