Sed , Awk , Cut
Hello Every One , today I would like to explain basics of these 3 Linux commands.
SED
sed command is used to replace one word in a file with any word specified.
Suppose content of file.txt is
cats are nice pets
Suppose we want to replace cats with dogs then sed command is used to help us.
sed 's/cats/dogs/' file.txt
Simple , here s
is used to search the word cats and sed command replaces all the occurrences of cats with dogs, also /
is used as delimiter, works fine with any other symbols as well.
sed 's:cats:dogs:' file.txt # Works same as above
But doing like this doesn't modify the content of the file .
sed -i 's cats dogs ' file.txt # Now space is delimiter
Doing like this replaces content of the file.
AWK
Awk command is used to filter out specific part in a file.
Let us suppose if we want to filter out 3rd word goutham from every file listed in the hoe directory, then awk comes to help.
ls -l | awk '{print $3}'
output of ls command is passed as input to awk command, this command goes through every line and filters out 3rd word and displays. Simple.
By default awk command uses space as delimiter we can mention our own delimiter by using -F .
ls -l | awk -F '-' '{print $3}'
Now it treats -
instead of space as delimiter.
We can even mention file name from which it can filter out.
awk -F ':' '{print $2}' file.txt
We can write our own bash script in place of print
CUT
cut command is also used to filter out the specific words from the file.
There are different options like -b for bytes , -c for characters , -d delimiter, -f for fields.
Suppose we want to list out 3rd character from the ls -l output.
ls -l | cut -b 3 # -c also does the same
-f is for words
ls -l | cut -f 3 # filters 3rd word from outp
ls -l | cut -d '/' -f 3
filters 3rd word from ls-l output treating / as delimiter.
Same as awk we can it can also filters text from file by mentioning name of the file.
awk is advanced version of cut
That's it thanks for reading . Please let me know if you found any thing wrong or anything I missed.