3 ms·
Thank you for the feedback and the constructive criticism. Regarding the hold space I found it very confusing to use and understand. IMO it represents the 80/2
by adrianscheff 5y ago
Thank you for the feedback and the constructive criticism.
Regarding the hold space I found it very confusing to use and understand. IMO it represents the 80/20 of sed (80% effort for 20% results).
You're right, I'm using -r even when it's not necessary. To my defense I think it's a good habit to have since without it regex expressions are painful to write.
I didn't considered that using -E it's a better choice but I'll correct that now. (one might argue again that typing -r is easier than -E :D ).
Regarding the definition of words - I also thought of that when I wrote that snippet. I know it's not the complete regex for a word and that word regex patterns might differ. And I was probably a bit lazy - but I'll correct it presently.
I'd also like to say that I didn't write this as an absolute and ultimate reference. If I'm honest I wrote this as much to teach others as to solidify this knowledge myself.
Now since it seems it gained traction I'm kinda obligated to make this better, no? Darn. :)
PS: if you'd like to help me make this better please submit a pull request or leave a comment here. Looking at your profile I see that you try to limit your online time so I probably shouldn've asked. :P
- dolmen 5y agoNo mention of ';' to have multiple command on one line. Example: sed '10{p;q;}' myfile.txt
- adrianscheff 5y agoThank you for your feedback! Personally I very rarely use the ; operator since it works badly with braces and commands that use files. However I've added an example using the ; operator. PS: May I humbly point out that the command you provided will actually print up to line 10 and then a duplicate line. Like I said, unexpected (even though it seems logical). :)
- dolmen 5y agoYes: forgot -n
- dolmen 5y agoMost examples that use '#!/bin/bash' should be rewritten to use '#!/usr/bin/sed -f'. Example "multiple replacements": #!/usr/bin/sed -f s/a/A/ s/foo/BAR/ s/hello/HELLO/ Save it as replace.sed; chmod u+rx replace.sed; ./replace.sed myfile.txt
- adrianscheff 5y agoThanks, I've modified to use .sed scripts instead. I used bash scripts because I remembered (incorrectly it seems) that sed scripts were unsafe.
- chasil 5y agoCentOS 7's sed doesn't support -E, but CentOS 8 does. That might cause some confusion. Also, FYI, this is the link for the POSIX specification for sed: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html https://pubs.opengroup.org/onlinepubs/9699919799/utilities/s... Notice that -i is not POSIX.