Linux Command Line - find, which, whereis, grep, awk, sed
A short reference for common search tools.
find
find
is an executable for finding a file based on its name.
find .
return the files and directories in the current directory.
find . -name <pattern>
return the files and directories of the current directory that match a pattern such as \*.txt
or home\*
.
There is an alternative program locate
that is faster, but it requires a database that must be up to date with updatedb
or it can return incorrect information. locate
is also less standardized across systems.
which
which
returns the absolute path of an executable.
whereis
whereis
returns the locations of the binary, source and man pages of an executable.
grep
grep
stands for Global Regular Expression Print. It is useful for searching the contents of a file or multiple files. It can also be used in a Unix pipe for filtering data. GNU grep is faster than BSD grep, but it is not packaged with Mac OS X. You can install ggrep
with brew tap homebrew/dupes; brew install grep
.
grep "string" <file>
returns each line of the file that contains string
.
grep "string" <pattern>
returns each line of any file that contains string
, prefixed by the name of a file.
The -i "string"
flag makes matching string
case insensitive.
grep "regex" <pattern>
returns file lines based on matches for a regular expression.
grep -iw "string" <pattern>
returns matches to string
that is a full world. It matches This is a string.
, but not This is a shoestring.
.
... | grep "regex"
filters the results of another command.
grep -r "string" *
searches recursively in the current directory.
awk
awk
manipulates structured data and returns reports. It has the following features
- text file as records and fields
- variables, conditions and loops
- arithmetic and string operators
- generate formatted reports
awk '{print;}' <file>
prints every line of a file.
Finds one
or two
. The newline acts as or.
awk '{print $1,$2}' test.txt
prints the first two columns. $1
is the first item in a column.
$NF
is the last column.
sed
sed
is a stream editor. It operates on one line of a file at a time and makes changes for each line.
sed [options] commands <file>
sed '' test.txt
returns every line of the file.
sed '1p' test.txt
prints the first line. sed '1,5p' test.txt
prints the first five lines.
'1,+4p'
matches the first line plus four.
'1~2p'
is a range.
'1~2d'
deletes the first two lines.
-n
suppresses automatic printing.
-i
applies the filter directly to the file.
-i.bak
applies the filter directly to the file and creates a backup with .bak
at the end.
's/old/new'
replaces the first instance of old
with new
.
's/old/new/g'
replaces all instances of old
with new
.
's/old/new/2'
replaces the first two instances of old
with new
.