now THIS is the kind of tutorial video i'd like to see more often. Straight to the point, no boilerplate, explain a concept and show an example. Very educational and useful
Man, the last example is like the one that you taek at the end of lecture, the prof blows out your mind then tells you "time's up, we'll continue next lecture!" and then runs away lol. Thanks for the tutorial!
I like how you focus on a single command and give a very helpful overview. So many other "10 great linux commands" videos don't give enough detail for me to retain them. This is much better.
good points, I didn't touch -n and I ended up cutting -R for time and brevity but there is a good point for its importance and should of figured out how to fit it in
Honesty I have known grep for like a decade and use it literally daily for half of that decade but watching this made me realise what all I was missing on. Thanks for the video.
Came for the grep, stayed for the regex. Great content. One thing I would add is, sometimes I grep twice. For example, I want to find all the 404 logs, but then I also want to filter out logs with specific message, say "user not found". Then I can: cat server.log | grep 404 | grep 'user not found'
Pretty sure you can do both of those at the same time with -E and/or -v. Also, you can pass your file in to grep directly rather than cat, which is for concatenating files together. On some shells you can also just < file to print its contents.
Just found this channel, great stuff. I really like the way you go about explaining stuff. Looking forward to looking through more of your content - keep going!
I'm pressured for time, so I can't "Like" all of the positive comments - but please note that I do agree with each and every one...VERY userful videos...Yea for us, Thank you to you.
Yea I avoided Peral because I think it adds complexity to what is necessary vs not, hell I was trying to avoid -E but then the command was so ugly lol my thought was the Perl folks already know how to do Peral regex! lol
Very important note! The grep command is very battle tested. A regex that is safe with grep is not necessarily safe to use on requested resources. Always use extra caution with unknown inputs. Use extra extra caution if that unknown input can build a regular expression!
@4:40 -e tells grep to search for the regular expression '-a'. It does not negate special characters. For example if you searched for -e 'a$' it would return lines ending with the letter a
I guess that kind of videos can be helpful for beginner. Not too much detail and options digging, still a decent amount of helpful information. Well done! 👍☺
I wonder if people would be interested in TH-cam shorts with 'new / additional' tips and 'reminder' using this common tools 🤔.grep and find would be good candidates IMHO
Pretty sure -C is context. I use vim as my pager for man pages, but this should apply regardless. In man, I would use /^[ ]*-a, to find the section of the man page relating to the a flag. It reads, “show me lines beginning with some number of spaces immediately followed by -a”.
Great video! I consider myself a bit of a seasoned sysadmin but I still managed to learn '-w' and '-e' for the first time! I normally use 'fgrep " term " ' (or 'grep -F') to search literal strings. As a bit of feedback, I would avoid teaching 'cat | grep' as an example because it is generally considered to be poor practice as it achieves the same result while expending more CPU resources. But if you must use the example, then at the very least mention that it is less than an ideal use 'cat'. While 'cat' itself is not a huge deal resource-wise, myself, a long time ago have been guilty of using 'cat | grep' not knowing any better but hope to teach others better practices and better habits. I would instead use different commands like 'ifconfig' or 'ps' to demonstrate the use of piping into 'grep'.
Yea makes sense, I was mostly just demoing Gregs capabilities here but I could have been more clear it’s one of the ways to do it not “the” way. Thanks for watching
5:25 no, I don't believe the -- could relate to bash, that would have to be a feature of GREP itself. Because all arguments are passed the same way (argv). It would have to be GREP seeing the -- and handling it to change the behavior of future arguments.
I’m pretty sure that “-“ is handled by libc, or more specifically getopt and getopt_long (both functions implemented in libc), which grep likely uses for parsing command line args.
I know this wasn't the point of your video, but when you're using `man` pages, usually your pager can perform searches within by pressing `/` while you're looking at the man page. For example `/` followed by `-D` and then pressing Enter will find the `-D` flag and then press `n` or `N` to search forwards and backwards. (You can also press `?` instead of `/` to start searching backwards. If you spend a lot of time in man pages, definitely worth figuring out the keyboard shortcuts :) Loved the video btw, very to the point, no unnecessary preamble, just pure usefulness.
Great video overall. But I just want to point out that last part about filtering out IPs is wrong. The first 3 octets can all be 1-3 digits. That filter will miss a lot of possible IPs.
If you're using Gnu grep at least make use of the -P switch to get access to the Pearl regex. Also you could have mentioned that not all distros have --color added to the grep alias. Your IP regex isn't fully accurate either, since it also would match illegal addresses. Everything else was quite nice though. For coding purposes -Rn is useful (recursive and show line number). If you want to compare files I found it helpful to add the -x switch. I usually compared kernel .configs with grep -xivf old.config new.config, though I found that still needs too much scrolling, so I hope you have a gnu awk video ready, and you better not pipe grep into awk!
Yea that is true, I have a whole vid in the pipeline on OpenTelemetry (my day job is on an Observability team fun fact) But maybe I will do a quick video on jq, imo I use jq more then like awk. Thanks for the input, ill call you out when I do a vid on jq lol!
It may be worth nothing the globbing is performed by the shell, not grep. It is equivalent to just listing all the files that match the glob (because that's literally what the shell does).
Weirdly enough this might be the best complement I have gotten, I try so hard and feel so damn bad at creating thumbnails. Honestly Linux is the easy part lol, Thanks!
We've been trying to get people stop doing cat |grep for years. Why on earth would you do that? You add another process to your pipeline for absolutely no other reason than adding unneeded complexity. You should probably think before you try to teach.
ripgrep is night and day better but you can't always guarantee you have access to it as an engineer on a remote system or lets say in a troubleshooting interview!
I find myself needing to find a word in a directory and wanting to know the line number. -r for recursive, -n for line number grep -r -n searchterm dir/
“you must first know the rules, before you can break the rules” haha But yea if you are a power user there are many alternatives and ways to make it more powerful
ripgrep is night and day better but you can't always guarantee you have access to it as an engineer on a remote system or lets say in a troubleshooting interview!
Give it up for grep in 2024: ripgrep. It’s faster, it auto ignores files you probably don’t want to search for and it’s mostly a dropin replacement for grep.
ripgrep is night and day better but you can't always guarantee you have access to it as an engineer on a remote system or lets say in a troubleshooting interview!
Who up grepping they file rn
lol
i'm grepping my log files so hard rn
Noah?!!!!!
@@eklipsed9254 ?
When she grep on my file til I segfault
now THIS is the kind of tutorial video i'd like to see more often. Straight to the point, no boilerplate, explain a concept and show an example. Very educational and useful
Thanks! I appreciate it, more to come 😄
No useless talks, great content with examples, good video and audio quality.
Nice job! You earned a sub
Keep it up!
Tytyty 🫡
Man, the last example is like the one that you taek at the end of lecture, the prof blows out your mind then tells you "time's up, we'll continue next lecture!" and then runs away lol.
Thanks for the tutorial!
I like how you focus on a single command and give a very helpful overview. So many other "10 great linux commands" videos don't give enough detail for me to retain them. This is much better.
Much appreciated!
I have seen almost all your content. You can easily explain quite hard issues. Greetings.Thank you.
Really loved the video, very comprehensive yet quite short. Please keep posting more videos.
Two useful flags that I would've love to see: -R and -n.
good points, I didn't touch -n and I ended up cutting -R for time and brevity
but there is a good point for its importance and should of figured out how to fit it in
You absolute gigachad. This was amazing, thank you. 🙏
Glad you enjoyed it!
I subbed when he said "the alligators", hilarious! Loving the helpful video, it's great how you break everything down so well step by step.
LOLOLOLOL
Talking and typing is hard enough... to much to handle saying 'angle bracket' hahaha
and of course thanks!
Honesty I have known grep for like a decade and use it literally daily for half of that decade but watching this made me realise what all I was missing on. Thanks for the video.
-C is for context, a very important word.
Yea haha just chugging through forgot the word ha
Exactly is like the diff command where it says it has 3 lines of context (you can change the amount of lines of context).
@navekeng great content btw
Came for the grep, stayed for the regex. Great content. One thing I would add is, sometimes I grep twice. For example, I want to find all the 404 logs, but then I also want to filter out logs with specific message, say "user not found". Then I can: cat server.log | grep 404 | grep 'user not found'
Ah good point, Yea I guess it’s not obvious haha
Thanks for watching!
Pretty sure you can do both of those at the same time with -E and/or -v. Also, you can pass your file in to grep directly rather than cat, which is for concatenating files together. On some shells you can also just < file to print its contents.
Just found this channel, great stuff. I really like the way you go about explaining stuff. Looking forward to looking through more of your content - keep going!
More on the way, thanks!
I'm pressured for time, so I can't "Like" all of the positive comments - but please note that I do agree with each and every one...VERY userful videos...Yea for us, Thank you to you.
Use 'grep -P' for Perl regexes. Then you're able to use special shortcuts like \d for a digit or \s for a whitespace, etc.
Yea I avoided Peral because I think it adds complexity to what is necessary vs not, hell I was trying to avoid -E but then the command was so ugly lol
my thought was the Perl folks already know how to do Peral regex! lol
Thanks for the suggestion and watching!
Trust me, you will grow like anything just keep posting linux videos! totally loving it!
That's the plan!
You have the best video ever about grep on TH-cam
Very important note! The grep command is very battle tested.
A regex that is safe with grep is not necessarily safe to use on requested resources. Always use extra caution with unknown inputs. Use extra extra caution if that unknown input can build a regular expression!
Need a video on jq , I'm a noob at it but can appreciate how efficient it can be to find and manipulate json
No joke writing out a vid on jq right now!
Sometime this week actually! Haha thanks for the comment
@4:40 -e tells grep to search for the regular expression '-a'. It does not negate special characters. For example if you searched for -e 'a$' it would return lines ending with the letter a
Please keep making those Videos. Those are so nicely done :) I am thankful!
this is a great short and to the point video.
Appreciated!
Awesome videos for people learning man, keep it up!
Glad you like them!
I guess that kind of videos can be helpful for beginner. Not too much detail and options digging, still a decent amount of helpful information. Well done! 👍☺
Glad you enjoyed it!
Yea the intention is showing the power, basically removing some unknown unknowns from someone newer or rusty with the tool!
I wonder if people would be interested in TH-cam shorts with 'new / additional' tips and 'reminder' using this common tools 🤔.grep and find would be good candidates IMHO
Great video! Cheers!
Great video, will definitely help me prepare for my exam :)
Best of luck!
straight to the point, also i really like the video & sound quality. you earned a subscriber brah
ty ty 🫡
Pretty sure -C is context. I use vim as my pager for man pages, but this should apply regardless. In man, I would use /^[ ]*-a, to find the section of the man page relating to the a flag. It reads, “show me lines beginning with some number of spaces immediately followed by -a”.
good point, and yea I missed context lol
Great video! I consider myself a bit of a seasoned sysadmin but I still managed to learn '-w' and '-e' for the first time! I normally use 'fgrep " term " ' (or 'grep -F') to search literal strings.
As a bit of feedback, I would avoid teaching 'cat | grep' as an example because it is generally considered to be poor practice as it achieves the same result while expending more CPU resources. But if you must use the example, then at the very least mention that it is less than an ideal use 'cat'. While 'cat' itself is not a huge deal resource-wise, myself, a long time ago have been guilty of using 'cat | grep' not knowing any better but hope to teach others better practices and better habits. I would instead use different commands like 'ifconfig' or 'ps' to demonstrate the use of piping into 'grep'.
Great video, thanks!
One useful flag I didn't see: the -o flag. I use it a lot when grepping by some regex pattern and I only need the match output
Oh good callout I missed that and it would be a helpful one for sure!
You should be using your pager to find things in manual pages. Usually `less` is used as man pager and literally all you have to do is press `/`
Yea makes sense, I was mostly just demoing Gregs capabilities here but I could have been more clear it’s one of the ways to do it not “the” way.
Thanks for watching
Thank you. If you have time a video on the $ sed command would be great, leading to string parsing.
This is what youtube videos should be like!
Well don't think I can ask for a better complement! haha thank you!
Awesome!
Glad you think so!
It is helpful to get a grip on grep.
such a great concise video, thx!
nothing that I didn't know already but great video anyways
Glad you enjoyed!
grep is probably one of the most powerful pieces of software ever created next to git
agreed
Amazing!
Useful! Thanks
Glad you think so!
I've always thought "-C n" stands for context. As in, the number of lines of context around the match. At least, that's how I remember it.
Ngl I made up contains clearly haha you are prob right I need to check the man page haha
Thanks for the spot haha
5:25 no, I don't believe the -- could relate to bash, that would have to be a feature of GREP itself. Because all arguments are passed the same way (argv). It would have to be GREP seeing the -- and handling it to change the behavior of future arguments.
I’m pretty sure that “-“ is handled by libc, or more specifically getopt and getopt_long (both functions implemented in libc), which grep likely uses for parsing command line args.
I know this wasn't the point of your video, but when you're using `man` pages, usually your pager can perform searches within by pressing `/` while you're looking at the man page. For example `/` followed by `-D` and then pressing Enter will find the `-D` flag and then press `n` or `N` to search forwards and backwards. (You can also press `?` instead of `/` to start searching backwards. If you spend a lot of time in man pages, definitely worth figuring out the keyboard shortcuts :)
Loved the video btw, very to the point, no unnecessary preamble, just pure usefulness.
Yea good point and something I could have clarified that this was one way to do it not “the” way to do it!
Thanks for the comment and watching!
Great video overall.
But I just want to point out that last part about filtering out IPs is wrong. The first 3 octets can all be 1-3 digits. That filter will miss a lot of possible IPs.
Nice tutorial
Glad you think so!
Wow; just found this and loved it! Thanks Navek, you know have a new Sub... ME :)
Thanks and welcome
If you're using Gnu grep at least make use of the -P switch to get access to the Pearl regex. Also you could have mentioned that not all distros have --color added to the grep alias. Your IP regex isn't fully accurate either, since it also would match illegal addresses.
Everything else was quite nice though. For coding purposes -Rn is useful (recursive and show line number). If you want to compare files I found it helpful to add the -x switch. I usually compared kernel .configs with grep -xivf old.config new.config, though I found that still needs too much scrolling, so I hope you have a gnu awk video ready, and you better not pipe grep into awk!
I suggest you watch next the fantastic "Where GREP came from" by Computerphile...
A great video for sure
Good channel. Keep going 😊
Thank you! 😃
RE: Logging
Use structured logging and preferrably JSON - you can now use jq and do WAY more powerful stuff in an almost-as-complex language as regex.
Yea that is true, I have a whole vid in the pipeline on OpenTelemetry (my day job is on an Observability team fun fact)
But maybe I will do a quick video on jq, imo I use jq more then like awk.
Thanks for the input, ill call you out when I do a vid on jq lol!
For `-C` the mnemonic is "context" I believe
yea correct! hahaha I was flying through it and forgot what it was lol
@@navekeng awesome videos by the way.. should have said that part first :)
Thanks! Haha
It may be worth nothing the globbing is performed by the shell, not grep. It is equivalent to just listing all the files that match the glob (because that's literally what the shell does).
Yea, makes sense. Sometimes i zero in on how to use the tool and have to cut context. Its a balance for sure that I am still learning
take the sub bro , u deserve it , will recommend u a lot
I appreciate that!
super underrated
Appreciate that!
the nice thumbnail drag me here
Weirdly enough this might be the best complement I have gotten, I try so hard and feel so damn bad at creating thumbnails.
Honestly Linux is the easy part lol,
Thanks!
damn i did not know some of the flags. nice vid man
Glad It was helpful, thanks for watching
6:00 C for "circa"!
less, greater than are called angle brackets in this context 9:27
LOL I was movinnn okay... grep makes my brain fog up and I prefer "big alligator" anyways
thx man
what console font is that?
JetBrains Mono Nerd Font
@@navekeng oh damn, i use jetbrains mono in my jetbrains IDE, no wonder that tickled something in my brain :D thx!
Haha idk it’s not perfect and I don’t love it exsactly yet, but can’t find something better.
I’m sure it will change again 😆
Clear screen is Ctrl-L .
Somthing something “old habits” haha 😂
Why use Grep?
Reply with what you use it for!
back to school kids... (btw just pumping your engagement, disregard the word salad coming out of my brai... "there is no spoon Neo"... keyboard)
A keyboard warrior if you will, fightin the good fight
ripgrep > grep
don't disagree, but you have to learn the rules before you can break them.
Also you might not always be on a system that has ripgrep
Like who searched for this video using grep
grep -ril
lol
We've been trying to get people stop doing cat |grep for years. Why on earth would you do that? You add another process to your pipeline for absolutely no other reason than adding unneeded complexity. You should probably think before you try to teach.
`grep EXP FILE` > `cat FILE | grep EXP`
lol
ripgrep®
ripgrep is night and day better but you can't always guarantee you have access to it as an engineer on a remote system or lets say in a troubleshooting interview!
video bookmarked
🙂
Great, but please speak more slowly.
Been grepping since 1987 or so...
🫡
0:50 what a cat abuse.
Lol
I find ripgrep to be faster and more useful, especially combined with fzf.
I find myself needing to find a word in a directory and wanting to know the line number. -r for recursive, -n for line number
grep -r -n searchterm dir/
Unlocking grep: Install ripgrep 😎
“you must first know the rules, before you can break the rules” haha
But yea if you are a power user there are many alternatives and ways to make it more powerful
I use ripgrep btw
ripgrep is night and day better but you can't always guarantee you have access to it as an engineer on a remote system or lets say in a troubleshooting interview!
@@navekeng yep, unfortunately, but GNU grep is still a great tool
Love your content and your presentation. Got a sub from this guy. | grep "earned sub"
Thanks!
Give it up for grep in 2024: ripgrep. It’s faster, it auto ignores files you probably don’t want to search for and it’s mostly a dropin replacement for grep.
ripgrep is night and day better but you can't always guarantee you have access to it as an engineer on a remote system or lets say in a troubleshooting interview!