diff --git a/SC2126.md b/SC2126.md new file mode 100644 index 0000000..3fbb4ce --- /dev/null +++ b/SC2126.md @@ -0,0 +1,24 @@ +## Consider using grep -c instead of grep|wc. + +### Problematic code: + + grep foo | wc -l + +### Correct code: + + grep -c foo + +### Rationale: + +This is purely a stylistic issue. `grep` can count lines without piping to `wc`. + +Note that in many cases, this number is only used to see whether there are matches (i.e. `> 0`). In these cases, it's better and more efficient to use `grep -q` and check its exit status: + + if grep -q pattern file + then + echo "The file contains the pattern" + fi + +### Exceptions + +If you e.g. want to count characters instead of lines, and you actually care about the number and not just whether it's greater than 0. \ No newline at end of file