In that case, the value of x inside AWK is vulnerable to regular expression metacharacters. Say, for example, that you wanted to match a pathname that had a dot. The dot would not be treated literally, but would be a wildcard matching any character. In the following example, it yields a false positive.
There's simply no way around it. Unless you are absolutely certain that there will be no metacharacters involved, you cannot pass a value through SED or AWK's regular expression parsers (or AWK's string parser) without passing that value through some sort of sanitizing step to properly escape those special characters (which would be something of a nightmare if it had to be made safe to pass through AWK's string parsing before arriving at the regular expressioin parsing stage).
Alister
---------- Post updated at 01:18 PM ---------- Previous update was at 01:15 PM ----------
cue:
Now that i think about it, by far the simplest solution to this is fgrep. I became fixated on AWK and sed since they were listed in the original post. Unless I missed something, the following should work just fine and is not susceptible to metacharacter interference.
Hello
I am new to shell scripting and can anyone tell me how to check if there are any special characters in a file. Can i use grep ?
thanks
susie (2 Replies)
Hello,
I have a requirement to search a directory, which contains any number of other directories for file names that contain special characters.
directory structure
DIR__
|__>DIR1
|__>DIR2__
|__>DIR2.1
|__>DIR2.2
|__>DIR3
..
... (8 Replies)
i'm puzzled....
trying to look for the pattern }"'. but the below code returns to me the message below (pattern is curley queue + dbl qt + sng qt + period)
nawk -v pat="\}\"\'\."'
{
if (match($0, pat)) {
before = substr($0,1,RSTART-1);
... (11 Replies)
Hi,
On AIX 5200-07-00 I have a find command as following to delete files from a certain location that are more than 7 days old. I am being told that I cannot use -exec option to delete files from these directories.
Having said that I am more curious to know how this can be done.
an sample... (3 Replies)
Hi all,
I have the following lines
<b>A gtwrhwrthwr text hghthwrhtwrtw </b><font color='#06C'>; text text (text)
<b>B gtwrhwrthwr text hghthwrhtwrtw </b><font color='#06C'>; text text (text)
<b>J gtwrhwrthwr text hghthwrhtwrtw </b><font color='#06C'>; text text (text)
and I would like to... (5 Replies)
I'm looking for SED equivalent for grep -w -f. All I want is to search a list of patterns from a file. Also If the pattern doesn't match I do not want "null returned", rather I would prefer some text as place holder say "BLANK LINE" as I intend to process the output file based on line number.
... (1 Reply)
Hello All,
I am here again scratching my head on pattern selection with special characters.
I have a large file having around 200 entries and i have to select a single line based on a pattern.
I am able to do that:
Code:
cat mytest.txt | awk -F: '/myregex/ { print $2}'
... (6 Replies)
Hi all,
I have a list which I want to search in another file.
I can do that using
grep -f
but the search is failing due to special characters, how do I solve this?
One row in that list is
amino-acid permease inda1 gb|EDU41782.1| amino-acid permease inda1 Input file to be searched... (2 Replies)
Hello Team,
Any help would be much appreciated for the below scenario:
I have a sed command below where I am trying to replace the contents of 'old_pkey' variable with 'new_pkey' variable in a Soap request file (delete_request.txt). This works fine for regular string values, but this new_pkey... (8 Replies)
Discussion started by: ChicagoBlues
8 Replies
LEARN ABOUT PLAN9
regexp
REGEXP(6) Games Manual REGEXP(6)NAME
regexp - regular expression notation
DESCRIPTION
A regular expression specifies a set of strings of characters. A member of this set of strings is said to be matched by the regular
expression. In many applications a delimiter character, commonly bounds a regular expression. In the following specification for regular
expressions the word `character' means any character (rune) but newline.
The syntax for a regular expression e0 is
e3: literal | charclass | '.' | '^' | '$' | '(' e0 ')'
e2: e3
| e2 REP
REP: '*' | '+' | '?'
e1: e2
| e1 e2
e0: e1
| e0 '|' e1
A literal is any non-metacharacter, or a metacharacter (one of .*+?[]()|^$), or the delimiter preceded by
A charclass is a nonempty string s bracketed [s] (or [^s]); it matches any character in (or not in) s. A negated character class never
matches newline. A substring a-b, with a and b in ascending order, stands for the inclusive range of characters between a and b. In s,
the metacharacters an initial and the regular expression delimiter must be preceded by a other metacharacters have no special meaning and
may appear unescaped.
A matches any character.
A matches the beginning of a line; matches the end of the line.
The REP operators match zero or more (*), one or more (+), zero or one (?), instances respectively of the preceding regular expression e2.
A concatenated regular expression, e1e2, matches a match to e1 followed by a match to e2.
An alternative regular expression, e0|e1, matches either a match to e0 or a match to e1.
A match to any part of a regular expression extends as far as possible without preventing a match to the remainder of the regular expres-
sion.
SEE ALSO awk(1), ed(1), sam(1), sed(1), regexp(2)REGEXP(6)