09-08-2008
Quote:
Originally Posted by
matrixmadhan
had perl been there in the list it would do everything
Yes ... slowly. ;-))
I don't want to indulge into the perl-as-a-language-discussion. Suffice it to say that the discussion taking place is enough to make me wary about it. Being
disputable is a sign of being problematic regardless of the dispute being carried out or not.
Regarding the thread openers question: sed and awk are tools for different purposes and the question which one to learn makes about as much sense as the question "should i learn the hammer or the nail tool". You will need both.
It is quite common to misuse one tool for a purpose where the other would be better suited. That doesn't make the practice any better - just more common.
To find out which tool to use for which purpose just look at their differences: sed is faster and smaller than awk. awk, on the other hand, is able to work context-sensitive and has a much bigger function library. As a rule of thumb: if you can do it in sed, than do it in sed, in any other case use awk. If you have a line-oriented file and you want to parse out some values from each line and create a nicely aligned table probably sed will be the right tool for you. If you want to sum on one of the fields and write the total in the last line your tool of choice is awk.
If the problem you are trying to solve involves lots of processing you might save a lot of time using sed instead of awk. If the problem is complex and interdependent you might be able to solve it with awk easily and straightforwardly but only with a lot of "programming magic" (if at all) with sed. Bottom line: use every tool for what it is designed to achieve. "One size fits all" is as bad a concept when it comes to chosing tools as it is with condome sizes.
I hope this helps.
bakunin
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
I have a question. Take the following statement
awk -F\| '{print $21}' testfile | sed 's/\//\\/g' > newfile
This will grab the 21st column of a | delimited text file, replace the forward slashes "/" , with back slashes "\", and redirect the output newfile. Now, how do I get the output... (4 Replies)
Discussion started by: shimb0
4 Replies
2. Shell Programming and Scripting
Hello,
I am new to shell scripting. I want to optimize my one of the script.
I have one file and i want to remove selected zones for domains from that file.In this file i have almost 3500 zones for domains.Sample data for the file....
named.backup... (0 Replies)
Discussion started by: nrbhole
0 Replies
3. Shell Programming and Scripting
How do I grab the first 10 characters of a line and append it to another empty file? (7 Replies)
Discussion started by: xgringo
7 Replies
4. UNIX for Dummies Questions & Answers
Hello,
Despite reading the Pattern Matching chapter in the O'Reilly Sed & Awk book several times and
looking at numerous examples, I cannot seem to get any kind of conditional script to work in my awk scripts!
I am able to do the basic awk and grep script to capture the data but when I do with... (0 Replies)
Discussion started by: pg55
0 Replies
5. Shell Programming and Scripting
Hi all,
can anyone have sed & awk programming doc..so that to learn it easier.. (1 Reply)
Discussion started by: gk2009
1 Replies
6. Shell Programming and Scripting
I have large number of data files, close to 300 files, lets say all files are same kind and have extension .dat , each file have mulitple lines in it.
There is a unique line in each file containing string 'SERVER'. Right after this line there is another line which contain a string 'DIGIT=0',... (4 Replies)
Discussion started by: sal_tx
4 Replies
7. UNIX for Dummies Questions & Answers
Hi,
Can anyone let me know the difference between awk and sed utilities in Unix?
Many thanks. (2 Replies)
Discussion started by: venkatesht
2 Replies
8. Shell Programming and Scripting
Hello,
I have a file. its content are like below.
mdn:87439842
imsi:23082038203
Ctime:12082010 01:20:10
mdn:9324783783
imsi:402349823322
Ctime: 12072010 01:20:10
mdn:87439842
imsi:23082038203
Ctime: 23072010 01:20:10
mdn:87439842
imsi:23082038203
Ctime:18072010 01:20:10
mdn:87439842... (3 Replies)
Discussion started by: Sanket11
3 Replies
9. Shell Programming and Scripting
Hi Experts,
I am studying SED and AWK text processing commands with an E-book. I am not satisfied with the way of explanation and examples given by them.
I would like you guys to suggest me the Best book for SED and AWK to become good in this utility.
Thanks in Advance (1 Reply)
Discussion started by: linuxrulez
1 Replies
10. Shell Programming and Scripting
string="din&esh\nisgood"
File.txt:
the name is
sed "s#\#${string}#g" File.txt
Output am getting:
the name is dinesh
is good
Expected output:
the name is din&esh\nisgood
The input string is dynamic it will be keep on changing
am able to handle & by placing \& in the string.. (5 Replies)
Discussion started by: dineshaila
5 Replies
regex(1F) FMLI Commands regex(1F)
NAME
regex - match patterns against a string
SYNOPSIS
regex [-e] [ -v "string"] [ pattern template] ... pattern [template]
DESCRIPTION
The regex command takes a string from the standard input, and a list of pattern / template pairs, and runs regex() to compare the string
against each pattern until there is a match. When a match occurs, regex writes the corresponding template to the standard output and
returns TRUE. The last (or only) pattern does not need a template. If that is the pattern that matches the string, the function simply
returns TRUE. If no match is found, regex returns FALSE.
The argument pattern is a regular expression of the form described in regex(). In most cases, pattern should be enclosed in single quotes
to turn off special meanings of characters. Note that only the final pattern in the list may lack a template.
The argument template may contain the strings $m0 through $m9, which will be expanded to the part of pattern enclosed in ( ... )$0 through
( ... )$9 constructs (see examples below). Note that if you use this feature, you must be sure to enclose template in single quotes so
that FMLI does not expand $m0 through $m9 at parse time. This feature gives regex much of the power of cut(1), paste(1), and grep(1), and
some of the capabilities of sed(1). If there is no template, the default is $m0$m1$m2$m3$m4$m5$m6$m7$m8$m9.
OPTIONS
The following options are supported:
-e Evaluates the corresponding template and writes the result to the standard output.
-v "string" Uses string instead of the standard input to match against patterns.
EXAMPLES
Example 1: Cutting letters out of a string
To cut the 4th through 8th letters out of a string (this example will output strin and return TRUE):
`regex -v "my string is nice" '^.{3}(.{5})$0' '$m0'`
Example 2: Validating input in a form
In a form, to validate input to field 5 as an integer:
valid=`regex -v "$F5" '^[0-9]+$'`
Example 3: Translating an environment variable in a form
In a form, to translate an environment variable which contains one of the numbers 1, 2, 3, 4, 5 to the letters a, b, c, d, e:
value=`regex -v "$VAR1" 1 a 2 b 3 c 4 d 5 e '.*' 'Error'`
Note the use of the pattern '.*' to mean "anything else".
Example 4: Using backquoted expressions
In the example below, all three lines constitute a single backquoted expression. This expression, by itself, could be put in a menu defini-
tion file. Since backquoted expressions are expanded as they are parsed, and output from a backquoted expression (the cat command, in this
example) becomes part of the definition file being parsed, this expression would read /etc/passwd and make a dynamic menu of all the login
ids on the system.
`cat /etc/passwd | regex '^([^:]*)$0.*$' '
name=$m0
action=`message "$m0 is a user"`'`
DIAGNOSTICS
If none of the patterns match, regex returns FALSE, otherwise TRUE.
NOTES
Patterns and templates must often be enclosed in single quotes to turn off the special meanings of characters. Especially if you use the
$m0 through $m9 variables in the template, since FMLI will expand the variables (usually to "") before regex even sees them.
Single characters in character classes (inside []) must be listed before character ranges, otherwise they will not be recognized. For exam-
ple, [a-zA-Z_/] will not find underscores (_) or slashes (/), but [_/a-zA-Z] will.
The regular expressions accepted by regcmp differ slightly from other utilities (that is, sed, grep, awk, ed, and so forth).
regex with the -e option forces subsequent commands to be ignored. In other words, if a backquoted statement appears as follows:
`regex -e ...; command1; command2`
command1 and command2 would never be executed. However, dividing the expression into two:
`regex -e ...``command1; command2`
would yield the desired result.
ATTRIBUTES
See attributes(5) for descriptions of the following attributes:
+-----------------------------+-----------------------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+-----------------------------+-----------------------------+
|Availability |SUNWcsu |
+-----------------------------+-----------------------------+
SEE ALSO
awk(1), cut(1), grep(1), paste(1), sed(1), regcmp(3C), attributes(5)
SunOS 5.10 12 Jul 1999 regex(1F)