create your own

Example Power Usage Of Grep Cut and Awk Linux Command Example Demo

71
rate or flag this page

By bhagwat dig it


Art 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

Print   —   Rate it:  up  down  flag this hub

Comments

RSS for comments on this Hub

fava profile image

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.

bhagwat dig it  says:
11 months ago

This is great thanks for the suggestion Fava.

fava profile image

fava  says:
11 months ago

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.

bhagwat dig it  says:
10 months ago

I often keep updating my linux notes and discoveries generally related to Embedded linux at my thech notes http://bhagwat-masalkar.blogspot.com/

Jadu Saikia  says:
10 days ago

Awk is a great tool.

You might like these practical posts on awk:

http://unstableme.blogspot.com/search/label/Awk

Thanks.

Submit a Comment

Members and Guests

Sign in or sign up and post using a hubpages account.


optional


  • No HTML is allowed in comments, but URLs will be hyperlinked
  • Comments are not for promoting your hubs or other sites

working