Monday, July 21, 2008

How to use sed ? Practicle use of sed

1. To find and remove perticular word
sed 's/root/mahendra/g' file1.txt
2. Write the statement to remove '/' from df -k using sed df -k sed 's/\// /g'
3. sed work fine with regular expression df -k sed 's/$/EOL/' -> This will add EOL at the end of line.
4. How to find blank line
sed 's/^$/this used to be a blank line/' file1.txt grep " used t" wc -l
5. . means any character more /var/adm/messagessed 's/Jan .. ..:..:../Jan 2008/g' more
6. The '*' character means "any number of the previous character". This applies both to literal characters and to characters that are a result of using "[]" or '.'. For example, sed 's/ *$//' filename
deletes all trailing spaces from each line, while
sed 's/[ ]*$//' filename
deletes any sequence of trailing tabs and spaces. It also works when using "[^]":
sed 's/[ ][^ ]*$//' filename
deletes the last word (sequence of non-spaces) on each line.
7. It is important to know that '*' will match zero occurences. If you need to match an integer, for example,
sed 's/ [0-9]* / integer /g' filename
will turn " " into " integer ", which is not what you want. In this case, you should use
sed 's/ [0-9][0-9]* / integer /g' filename
which will demand at least one digit.
8. Removing perticuler string.
df -k sed 's/[e-o][mn]/YES/g' This will find all letters ending with m or n and any letter from e to o to their previous position.
9. sed 1d ==> delete row 1 sed 2d ==> delete row 2 sed 1,2d ==> delete row 1,2
-------------------------------------------------------------------------
FILE SPACING:
# double space a file sed G
# double space a file which already has blank lines in it. Output file # should contain no more than one blank line between lines of text. sed '/^$/d;G'
# triple space a file sed 'G;G'
# undo double-spacing (assumes even-numbered lines are always blank) sed 'n;d'
# insert a blank line above every line which matches "regex" sed '/regex/{x;p;x;}'
# insert a blank line below every line which matches "regex" sed '/regex/G'
# insert a blank line above and below every line which matches "regex" sed '/regex/{x;p;x;G;}'
NUMBERING:
# number each line of a file (simple left alignment). Using a tab (see # note on '\t' at end of file) instead of space will preserve margins. sed = filename sed 'N;s/\n/\t/'
# number each line of a file (number on left, right-aligned) sed = filename sed 'N; s/^/ /; s/ *\(.\{6,\}\)\n/\1 /'
# number each line of file, but only print numbers if line is not blank sed '/./=' filename sed '/./N; s/\n/ /'
# count lines (emulates "wc -l") sed -n '$='
TEXT CONVERSION AND SUBSTITUTION:
# IN UNIX ENVIRONMENT: convert DOS newlines (CR/LF) to Unix format sed 's/.$//' # assumes that all lines end with CR/LF sed 's/^M$//' # in bash/tcsh, press Ctrl-V then Ctrl-M sed 's/\x0D$//' # gsed 3.02.80, but top script is easier
# IN UNIX ENVIRONMENT: convert Unix newlines (LF) to DOS format sed "s/$/`echo -e \\\r`/" # command line under ksh sed 's/$'"/`echo \\\r`/" # command line under bash sed "s/$/`echo \\\r`/" # command line under zsh sed 's/$/\r/' # gsed 3.02.80
# IN DOS ENVIRONMENT: convert Unix newlines (LF) to DOS format sed "s/$//" # method 1 sed -n p # method 2
# IN DOS ENVIRONMENT: convert DOS newlines (CR/LF) to Unix format # Can only be done with UnxUtils sed, version 4.0.7 or higher. # Cannot be done with other DOS versions of sed. Use "tr" instead. sed "s/\r//" infile >outfile # UnxUtils sed v4.0.7 or higher tr -d \r outfile # GNU tr version 1.22 or higher
# delete leading whitespace (spaces, tabs) from front of each line # aligns all text flush left sed 's/^[ \t]*//' # see note on '\t' at end of file
# delete trailing whitespace (spaces, tabs) from end of each line sed 's/[ \t]*$//' # see note on '\t' at end of file
# delete BOTH leading and trailing whitespace from each line sed 's/^[ \t]*//;s/[ \t]*$//'
# insert 5 blank spaces at beginning of each line (make page offset) sed 's/^/ /'
# align all text flush right on a 79-column width sed -e :a -e 's/^.\{1,78\}$/ &/;ta' # set at 78 plus 1 space
# center all text in the middle of 79-column width. In method 1, # spaces at the beginning of the line are significant, and trailing # spaces are appended at the end of the line. In method 2, spaces at # the beginning of the line are discarded in centering the line, and # no trailing spaces appear at the end of lines. sed -e :a -e 's/^.\{1,77\}$/ & /;ta' # method 1 sed -e :a -e 's/^.\{1,77\}$/ &/;ta' -e 's/\( *\)\1/\1/' # method 2
# substitute (find and replace) "foo" with "bar" on each line sed 's/foo/bar/' # replaces only 1st instance in a line sed 's/foo/bar/4' # replaces only 4th instance in a line sed 's/foo/bar/g' # replaces ALL instances in a line sed 's/\(.*\)foo\(.*foo\)/\1bar\2/' # replace the next-to-last case sed 's/\(.*\)foo/\1bar/' # replace only the last case
# substitute "foo" with "bar" ONLY for lines which contain "baz" sed '/baz/s/foo/bar/g'
# substitute "foo" with "bar" EXCEPT for lines which contain "baz" sed '/baz/!s/foo/bar/g'
# change "scarlet" or "ruby" or "puce" to "red" sed 's/scarlet/red/g;s/ruby/red/g;s/puce/red/g' # most seds gsed 's/scarlet\ruby\puce/red/g' # GNU sed only
# reverse order of lines (emulates "tac") # bug/feature in HHsed v1.5 causes blank lines to be deleted sed '1!G;h;$!d' # method 1 sed -n '1!G;h;$p' # method 2
# reverse each character on the line (emulates "rev") sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//'
# join pairs of lines side-by-side (like "paste") sed '$!N;s/\n/ /'
# if a line ends with a backslash, append the next line to it sed -e :a -e '/\\$/N; s/\\\n//; ta'
# if a line begins with an equal sign, append it to the previous line # and replace the "=" with a single space sed -e :a -e '$!N;s/\n=/ /;ta' -e 'P;D'
# add commas to numeric strings, changing "1234567" to "1,234,567" gsed ':a;s/\B[0-9]\{3\}\>/,&/;ta' # GNU sed sed -e :a -e 's/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/;ta' # other seds
# add commas to numbers with decimal points and minus signs (GNU sed) gsed ':a;s/\(^\[^0-9.]\)\([0-9]\+\)\([0-9]\{3\}\)/\1\2,\3/g;ta'
# add a blank line every 5 lines (after lines 5, 10, 15, 20, etc.) gsed '0~5G' # GNU sed only sed 'n;n;n;n;G;' # other seds
SELECTIVE PRINTING OF CERTAIN LINES:
# print first 10 lines of file (emulates behavior of "head") sed 10q
# print first line of file (emulates "head -1") sed q
# print the last 10 lines of a file (emulates "tail") sed -e :a -e '$q;N;11,$D;ba'
# print the last 2 lines of a file (emulates "tail -2") sed '$!N;$!D'
# print the last line of a file (emulates "tail -1") sed '$!d' # method 1 sed -n '$p' # method 2
# print only lines which match regular expression (emulates "grep") sed -n '/regexp/p' # method 1 sed '/regexp/!d' # method 2
# print only lines which do NOT match regexp (emulates "grep -v") sed -n '/regexp/!p' # method 1, corresponds to above sed '/regexp/d' # method 2, simpler syntax
# print the line immediately before a regexp, but not the line # containing the regexp sed -n '/regexp/{g;1!p;};h'
# print the line immediately after a regexp, but not the line # containing the regexp sed -n '/regexp/{n;p;}'
# print 1 line of context before and after regexp, with line number # indicating where the regexp occurred (similar to "grep -A1 -B1") sed -n -e '/regexp/{=;x;1!p;g;$!N;p;D;}' -e h
# grep for AAA and BBB and CCC (in any order) sed '/AAA/!d; /BBB/!d; /CCC/!d'
# grep for AAA and BBB and CCC (in that order) sed '/AAA.*BBB.*CCC/!d'
# grep for AAA or BBB or CCC (emulates "egrep") sed -e '/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d # most seds gsed '/AAA\BBB\CCC/!d' # GNU sed only
# print paragraph if it contains AAA (blank lines separate paragraphs) # HHsed v1.5 must insert a 'G;' after 'x;' in the next 3 scripts below sed -e '/./{H;$!d;}' -e 'x;/AAA/!d;'
# print paragraph if it contains AAA and BBB and CCC (in any order) sed -e '/./{H;$!d;}' -e 'x;/AAA/!d;/BBB/!d;/CCC/!d'
# print paragraph if it contains AAA or BBB or CCC sed -e '/./{H;$!d;}' -e 'x;/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d gsed '/./{H;$!d;};x;/AAA\BBB\CCC/b;d' # GNU sed only
# print only lines of 65 characters or longer sed -n '/^.\{65\}/p'
# print only lines of less than 65 characters sed -n '/^.\{65\}/!p' # method 1, corresponds to above sed '/^.\{65\}/d' # method 2, simpler syntax
# print section of file from regular expression to end of file sed -n '/regexp/,$p'
# print section of file based on line numbers (lines 8-12, inclusive) sed -n '8,12p' # method 1 sed '8,12!d' # method 2
# print line number 52 sed -n '52p' # method 1 sed '52!d' # method 2 sed '52q;d' # method 3, efficient on large files
# beginning at line 3, print every 7th line gsed -n '3~7p' # GNU sed only sed -n '3,${p;n;n;n;n;n;n;}' # other seds
# print section of file between two regular expressions (inclusive) sed -n '/Iowa/,/Montana/p' # case sensitive
SELECTIVE DELETION OF CERTAIN LINES:
# print all of file EXCEPT section between 2 regular expressions sed '/Iowa/,/Montana/d'
# delete duplicate, consecutive lines from a file (emulates "uniq"). # First line in a set of duplicate lines is kept, rest are deleted. sed '$!N; /^\(.*\)\n\1$/!P; D'
# delete duplicate, nonconsecutive lines from a file. Beware not to # overflow the buffer size of the hold space, or else use GNU sed. sed -n 'G; s/\n/&&/; /^\([ -~]*\n\).*\n\1/d; s/\n//; h; P'
# delete all lines except duplicate lines (emulates "uniq -d"). sed '$!N; s/^\(.*\)\n\1$/\1/; t; D'
# delete the first 10 lines of a file sed '1,10d'
# delete the last line of a file sed '$d'
# delete the last 2 lines of a file sed 'N;$!P;$!D;$d'
# delete the last 10 lines of a file sed -e :a -e '$d;N;2,10ba' -e 'P;D' # method 1 sed -n -e :a -e '1,10!{P;N;D;};N;ba' # method 2
# delete every 8th line gsed '0~8d' # GNU sed only sed 'n;n;n;n;n;n;n;d;' # other seds
# delete ALL blank lines from a file (same as "grep '.' ") sed '/^$/d' # method 1 sed '/./!d' # method 2
# delete all CONSECUTIVE blank lines from file except the first; also # deletes all blank lines from top and end of file (emulates "cat -s") sed '/./,/^$/!d' # method 1, allows 0 blanks at top, 1 at EOF sed '/^$/N;/\n$/D' # method 2, allows 1 blank at top, 0 at EOF
# delete all CONSECUTIVE blank lines from file except the first 2: sed '/^$/N;/\n$/N;//D'
# delete all leading blank lines at top of file sed '/./,$!d'
# delete all trailing blank lines at end of file sed -e :a -e '/^\n*$/{$d;N;ba' -e '}' # works on all seds sed -e :a -e '/^\n*$/N;/\n$/ba' # ditto, except for gsed 3.02*
# delete the last line of each paragraph sed -n '/^$/{p;h;};/./{x;/./p;}'
SPECIAL APPLICATIONS:
# remove nroff overstrikes (char, backspace) from man pages. The 'echo' # command may need an -e switch if you use Unix System V or bash shell. sed "s/.`echo \\\b`//g" # double quotes required for Unix environment sed 's/.^H//g' # in bash/tcsh, press Ctrl-V and then Ctrl-H sed 's/.\x08//g' # hex expression for sed v1.5
# get Usenet/e-mail message header sed '/^$/q' # deletes everything after first blank line
# get Usenet/e-mail message body sed '1,/^$/d' # deletes everything up to first blank line
# get Subject header, but remove initial "Subject: " portion sed '/^Subject: */!d; s///;q'
# get return address header sed '/^Reply-To:/q; /^From:/h; /./d;g;q'
# parse out the address proper. Pulls out the e-mail address by itself # from the 1-line return address header (see preceding script) sed 's/ *(.*)//; s/>.*//; s/.*[:<] *//'
# add a leading angle bracket and space to each line (quote a message) sed 's/^/> /'
# delete leading angle bracket & space from each line (unquote a message) sed 's/^> //'
# remove most HTML tags (accommodates multiple-line tags) sed -e :a -e 's/<[^>]*>//g;/ # extract multi-part uuencoded binaries, removing extraneous header # info, so that only the uuencoded portion remains. Files passed to # sed must be passed in the proper order. Version 1 can be entered # from the command line; version 2 can be made into an executable # Unix shell script. (Modified from a script by Rahul Dhesi.) sed '/^end/,/^begin/d' file1 file2 ... fileX uudecode # vers. 1 sed '/^end/,/^begin/d' "$@" uudecode # vers. 2
# zip up each .TXT file individually, deleting the source file and # setting the name of each .ZIP file to the basename of the .TXT file # (under DOS: the "dir /b" switch returns bare filenames in all caps). echo @echo off >zipup.bat dir /b *.txt sed "s/^\(.*\)\.TXT/pkzip -mo \1 \1.TXT/" >>zipup.bat
TYPICAL USE: Sed takes one or more editing commands and applies all ofthem, in sequence, to each line of input. After all the commands havebeen applied to the first input line, that line is output and a secondinput line is taken for processing, and the cycle repeats. Thepreceding examples assume that input comes from the standard inputdevice (i.e, the console, normally this will be piped input). One ormore filenames can be appended to the command line if the input doesnot come from stdin. Output is sent to stdout (the screen). Thus:
cat filename sed '10q' # uses piped input sed '10q' filename # same effect, avoids a useless "cat" sed '10q' filename > newfile # redirects output to disk
For additional syntax instructions, including the way to apply editingcommands from a disk file instead of the command line, consult "sed &awk, 2nd Edition," by Dale Dougherty and Arnold Robbins (O'Reilly,1997; http://www.ora.com), "UNIX Text Processing," by Dale Doughertyand Tim O'Reilly (Hayden Books, 1987) or the tutorials by Mike Arstdistributed in U-SEDIT2.ZIP (many sites). To fully exploit the powerof sed, one must understand "regular expressions." For this, see"Mastering Regular Expressions" by Jeffrey Friedl (O'Reilly, 1997).The manual ("man") pages on Unix systems may be helpful (try "mansed", "man regexp", or the subsection on regular expressions in "maned"), but man pages are notoriously difficult. They are not written toteach sed use or regexps to first-time users, but as a reference textfor those already acquainted with these tools.
QUOTING SYNTAX: The preceding examples use single quotes ('...')instead of double quotes ("...") to enclose editing commands, sincesed is typically used on a Unix platform. Single quotes prevent theUnix shell from intrepreting the dollar sign ($) and backquotes(`...`), which are expanded by the shell if they are enclosed indouble quotes. Users of the "csh" shell and derivatives will also needto quote the exclamation mark (!) with the backslash (i.e., \!) toproperly run the examples listed above, even within single quotes.Versions of sed written for DOS invariably require double quotes("...") instead of single quotes to enclose editing commands.
USE OF '\t' IN SED SCRIPTS: For clarity in documentation, we have usedthe expression '\t' to indicate a tab character (0x09) in the scripts.However, most versions of sed do not recognize the '\t' abbreviation,so when typing these scripts from the command line, you should pressthe TAB key instead. '\t' is supported as a regular expressionmetacharacter in awk, perl, and HHsed, sedmod, and GNU sed v3.02.80.
VERSIONS OF SED: Versions of sed do differ, and some slight syntaxvariation is to be expected. In particular, most do not support theuse of labels (:name) or branch instructions (b,t) within editingcommands, except at the end of those commands. We have used the syntaxwhich will be portable to most users of sed, even though the popularGNU versions of sed allow a more succinct syntax. When the reader seesa fairly long command such as this:
sed -e '/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d
it is heartening to know that GNU sed will let you reduce it to:
sed '/AAA/b;/BBB/b;/CCC/b;d' # or even sed '/AAA\BBB\CCC/b;d'
In addition, remember that while many versions of sed accept a commandlike "/one/ s/RE1/RE2/", some do NOT allow "/one/! s/RE1/RE2/", whichcontains space before the 's'. Omit the space when typing the command.
OPTIMIZING FOR SPEED: If execution speed needs to be increased (due tolarge input files or slow processors or hard disks), substitution willbe executed more quickly if the "find" expression is specified beforegiving the "s/.../.../" instruction. Thus:
sed 's/foo/bar/g' filename # standard replace command sed '/foo/ s/foo/bar/g' filename # executes more quickly sed '/foo/ s//bar/g' filename # shorthand sed syntax
On line selection or deletion in which you only need to output linesfrom the first part of the file, a "quit" command (q) in the scriptwill drastically reduce processing time for large files. Thus:
sed -n '45,50p' filename # print line nos. 45-50 of a file sed -n '51q;45,50p' filename # same, but executes much faster
If you have any additional scripts to contribute or if you find errorsin this document, please send e-mail to the compiler. Indicate theversion of sed you used, the operating system it was compiled for, andthe nature of the problem. Various scripts in this file were writtenor contributed by:
Al Aab <af137@freenet.toronto.on.ca> # "seders" list moderator Edgar Allen <era@sky.net> # various Yiorgos Adamopoulos <adamo@softlab.ece.ntua.gr> Dale Dougherty <dale@songline.com> # author of "sed & awk" Carlos Duarte <cdua@algos.inesc.pt> # author of "do it with sed" Eric Pement <pemente@northpark.edu> # author of this document Ken Pizzini <ken@halcyon.com> # author of GNU sed v3.02 S.G. Ravenhall <stew.ravenhall@totalise.co.uk> # great de-html script Greg Ubben <gsu@romulus.ncsc.mil> # many contributions & much help-------------------------------------------------------------------------

The combination ".*" means any number of any character. So, sed 's/col.*lapse/collapse/g' filename
will act on any line which contains the letters "col" and then "lapse", no matter what is in between. The '*' character is greedy: it takes as many characters as it can. So, the above script would turn
a b col d e f lapse h i j k lapse m n
into a b collapse m n
instead of a b collapse h i j k lapse m n
back to the top Substitution and SavingUp to this point, we have concentrated on deleting things that we match with "[]" and '.'. That's because we had no way of saving what we matched. The "\(" and "\)" operators will save whatever is found between them. Notice that these parentheses must be preceded by a backslash, while the characters ^$[].*\ don't need a backslash to act in a non-literal fashion. The first pair of "\(\)" saves into a place called "\1", and the second pair into "\2", and so on. sed 's/^\([A-Z][A-Za-z]*\), \([A-Z][A-Za-z]*\)/\2 \1/' filename
will turn "Lastname, Firstname" into "Firstname Lastname". Notice how the comma is placed outside the first pair of "\(\)" so it doesn't get inclued in the last name. Otherwise, the result would be "Firstname Lastname,".
Sometimes you will want to apply a substitution only to lines that meet some criteria that you can't specify in the string to be replaced. You do this using something called an "address". It comes before the "s" command. You can limit the command to a range of lines:
sed '1,20s/foobar/fubar/g' filename
The line count is cumulative across files, and starts at 1.
You might want to apply a change only to lines that contain a string:
sed '/^Aug/s/Mon /Monday /g' filename
Or to lines that don't contain a string:
using sh or ksh or bash,
sed '/^Aug/!s/Mon /Monday /g' filename
using csh or tcsh,
sed '/^Aug/\!s/Mon /Monday /g' filename
You can also apply the command to all lines between (and including) a start string and a stop string: sed '/^Aug/,/^Oct/s/Mon /Monday /g' filename
Normally sed reads a line, processes it, and prints it out. If you only want to see the lines that your command acted upon, then you don't want it to print out everyting. The "-n" flag will stop sed from printing after processing. So,
sed -n 's/fubar/foobar/g' filename
will print nothing at all. You must use the 'p' flag to the 's' command to make it print out what it has processed:
sed -n 's/fubar/foobar/gp' filename
Sed from a fileIf your sed script is getting long, you can put it into a file, like so: # This file is named "sample.sed" # comments can only appear in a block at the beginning s/color/colour/g s/flavor/flavour/g s/theater/theatre/g
Then call sed with the "-f" flag: sed -f sample.sed filename
Or, you can make an executable sed script:
#!/usr/bin/sed -f # This file is named "sample2.sed" s/color/colour/g s/flavor/flavour/g s/theater/theatre/g
then give it execute permissions: chmod u+x sample2.sed
and then call it like so:
./sample2.sed filename

Sunday, July 13, 2008

In search of new life …


People had lot of happiness in their life but they don’t know when it came in their life. They only realising after loosing it.

When I read this sentence, my mind forced me to think seriously on this statement. Objective of life is to be happy. If we have lot of happiness around us and if we are aware of it, is really serious thing.

We are searching happiness in very big way. Lot of time, really don’t know whether that will make us happy. Still we are giving our precious years , days and night sand finally after getting it; we found that it was just basic need of life or does not worth what we paid for it. Where is happiness then ?

To become stable in life ,we need good home , a four wheeler and steady income for meeting our daily needs. We also want to have good education for our childern , admission in good school. We also want steady flow of money for on-going needs. Obviously it is not so easy to achieve all easily. After globalization, world become smaller. We can now daily login to server located at other end of the earth. We can talk anywhere in this world within few seconds. Techonolgy made it possible. Oppertunities are open and hence much wider choice for become happy.

Unfortunately this lighter side of the picture. Dark side is really black. We don’t have time to spend with our loved once. Our eating habit are totally changed. We are no more regular in life. Stress are always with us like shadow. We are exposed to all deceases exists on this world. And list is endless ……

What is solution for this ? Or solution exists or not ?

I beleive solution is really simple.

1. Be realastics. Don’t waste your time unrealistic goals.
2. Find happiness in daily life’s small things. This is key to happiness..
3. Make environment around happy.
4. Whatever you are doing , do it happily.
5. Follow your heart. We have lot of time to do everything but unfortunately don’t have time to hear voice of 6. heart. Find some time to listen what is your heart is saying.
7. Identify things that makes you happy. It is not difficult. You know what makes you happy try spend most of things there.
8. Find the place to open your heart. Some time you want to speak something but unfotunatly nobody is hear you. Put some efforts build some relations around you.


Part 1.. to be Continue….

Friday, July 4, 2008

Let's listen to our heart.

Welcome !!!

How is life going on? Boring ? Yes , it will boring if we are not accepting enough given by god. If god has given eyes , we should the see beautiful world , stars and infinite things he has created for us. If he has given ears , we should listen the music. If he has given brain ,we should use it.


Everytime we want to say something. We are not ready to listen. Here we are loosers. Let's listen. Let's listen to god. Let's listen to our heart.


We need to explore life ....

About Me : I am Mahendra. Computer Engineer . God has gifted me sensitive mind. I always like to help other. I want to see everyone happy around me. I have founded small oraganisation called “ Shivchatrapati Gramvikas Pratisthan, Wadgoanpeer “ at my village Wadgoanpeer which is in western Maharashtra , India.
There are always storms going in my mind. Some times they are personal, sometime because political and social reason. I am finding place express myself and I found this is best place. Keep visiting here. I promise this blog will be very frequently updated with something new. Till then ... bye ..

Mahendra