Example Power Usage Of Grep Cut and Awk Linux Command Example Demo
71Art Of linux Programming
Today I learn about power usage of grep cut and awk command; My requirement was to know on which physical USB port which device is connected, I can get this information from /proc/bus/usb/devices; which tells me about on which port which device is connected; my udev script will automatically mount the USB device with combination of Manufacturer name and serial number;
Here are the steps, how I reached to simple solution instead of coding hundred lines of code.
To search for the SerialNumber in proc file i used
$ grep 'SerialNumber' /proc/bus/usb/devices
was giving me output in "S: SerialNumber=LDVTCGP6" format, I don't need that S: so used pipe;
$ grep 'SerialNumber' /proc/bus/usb/devices | awk '{print $2}'
This removes initial "S:" The output is combination of SerialNumber=LDVTCGP6 lines; I need to separate each strings with individual values; use cut command from linux.
$ grep 'SerialNumber' /proc/bus/usb/devices | awk '{print $2}' | cut -d= -f2
This gives me "LDVTCGP6" as serial number; I need only for two ports so use tail command.
$ grep 'SerialNumber' /proc/bus/usb/devices | awk '{print $2}' | cut -d= -f2 | tail -2
This gives me only last two values; redirect this to some file like
$ grep 'SerialNumber' /proc/bus/usb/devices | awk '{print $2}' | cut -d= -f2 | tail -2 > /var/usb_port
This file contains now serialnumbers of usb device connected now for same way append values for port in same file;
$ grep 'Port' /proc/bus/usb/devices | awk '{print $5}' | cut -d= -f2 | tail -2 >> /var/usb_port
This way I got serialnumbers and physical ports connected values in one file now I can open this file and manipulate to meet my requirements.
Linux programming Life is easy with cut,grep and awk commands in linux.
Some more examples to work out.
To print only the second and third lines of a file:
head -3 some.file | tail -2
Cut Command
Divide a file into several parts (columns) syntax: cut [-b] [-c] [-f] list [-n] [-d delim] [-s] [file]
If you want to print first set of data from each row, you can use cut command as follow: cut -d":" -f1 test.txt
PrintShare it! — Rate it: up down flag this hub
Comments
This is great thanks for the suggestion Fava.
That is one of the things I like about linux, there are often many ways to do something you are not forces to use one method.
I often keep updating my linux notes and discoveries generally related to Embedded linux at my thech notes http://bhagwat-masalkar.blogspot.com/
Awk is a great tool.
You might like these practical posts on awk:
http://unstableme.blogspot.com/search/label/Awk
Thanks.











fava says:
11 months ago
An alternate way to do the same is:
grep 'SerialNumber' /proc/bus/usb/devices | grep -o "[^=]*$"
This will search backwords until it finds the '=' and only output what matches.