The tools are as accurate as one defines the regular expressions to identify code and parse it correctly. They are working usually flawless, which means they are always right. If something isn't working and I start to get grey hairs about a problem to solve, I can be sure, that sed, awk or grep is always right in the end
Easier... hm, maybe awk is looking a bit more structured and has commands like other languages have. sed is like ed with only 1 letter for a function and can look somewhat messed up if complex regexp's are written.
If you start with small examples, you will get used to both, I bet, usually it takes it's time though like with all things
You can do a lot of tasks with sed as you can do with awk. The easy thing with awk is, that it is by default designed to parse fields and has therefore variables like NF, FS, OFS, .. and some more and is very readable compared to sed.
So here a short list, when what to use (other people might use the tools with other priorities) basically:
grep --- search every line of a file for some content
egrep/grep -E --- for using regular expressions
sed --- substituting, filtering, line and multiline parsing, ...
awk --- parsing fields, lines and multiline parsing, substitution, ...
For your wc -l problem, maybe try something like this for examle (asuming your commented lines start with a hash (#):
Edit: Ie. you have to go into the use of other regular expressions for comments in c/c++ like those /* ... */ and don't forget to escape them with usually backslashes.
hi all
by using cat /etc/passwd
I've got these output.
ajh1ect:x:839:501:Anthony:/home/ajh1ect:/bin/bash
mjb1ect:x:840:501:Michael:/home/mjb1ect:/bin/bash
mv3ect:x:841:501:Marian:/home/mv3ect:/bin/bash
now I want to see just the user ID and group ID.
so what is the code will be with... (2 Replies)
I have two .txt files one called good.txt and the other one is called bad.txt. Both contain email addresses in the following format:
john@john.com
bob@bob.com
sarah@sarah.com
Basically, I want to scrub good.txt against bad.txt and save the resulting output in scrubbed.txt meaning that if... (2 Replies)
------------------------------------------------------------------
Ex of Warning messgae,(Many similar lines occure for Both Test and Test1)
-WARNING:Below Field not implemented in file File name: /home/test/
new/file1, msg buffer is:
:Test:000948
... (1 Reply)
Hello all,
Can anyone help with the following? :)
I have file1 with 150,000 words in a list and file2 with 148,000 words in a list - all of which are in file1. I want to create a new file with the words that DO NOT match (i.e of 2000 words). I have done this very simple command , which is... (1 Reply)
Hi All,
I have a huge file, I need to two things from this file. I need to know the IP address or the hostname and second thing is the date&time.
The file looks like this and I need to get my data from this...
Trying...
Connected to 204.109.172.117.
Escape character is '^]'.
Fri... (4 Replies)
thanks for your reply.
but i'm not quite sure what your code is doing.
i may be using it wrong but i'm not getting what i'm supposed to get.
could you please elaborate?
thanks again, (6 Replies)
Thread1 {
x = 2
y = 10485
}
Thread2 {
x = 16
y = 1048
}
Thread3 {
x = 1
y = 1049
}
Thread4 {
x = 4
y = 1047
z = 500
}
Suppose the above is a piece of code. I need to automate and verify that the value of x under Thread1's 2.
There are several... (3 Replies)
Hi everyone!
I have a file like this
And I would like to find the Medium label when the value "last write" is "Jan 14" (it's could be another value like "jan 6")
I really don't know what way to use to solve this problem...
Thanks! (5 Replies)
got a file as y.txt
1 abc,def,ghj
2 defj,abc.kdm,ijk
3 lmn,cbk,mno
4 tmp,tmop,abc,pkl
5 pri,chk,cbk,lmo
6 def,cbk.pro,abc.kdm
i want to search in the above file the key word like abc
looking for two outcomes by passing the parameter value as abc into function and the two outocmes are... (6 Replies)
Discussion started by: silgun
6 Replies
LEARN ABOUT OPENSOLARIS
regex
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.11 12 Jul 1999 regex(1F)