I am going to try to...
the first "^" means that the pattern should match from the beginning.
the [ means match any of the character till ]
in your case the immediate first character after [ is ^, which has a special meaning i.e. match anything other than the next character.
Now it happens that your next character 0-9 is not one character but a range (because of the -)
So that [^0-9] means is match anything other than the characters 0 through 9.
the next character in your pattern is '+' which means one or more of these.
So to recap till here... ^"[^0-9]+ means match from the beginning any characters that are not 0 though 9.
Next I am not sure what ${PNUM} is. Sorry cant explain that.
and then [^0-9] again means the same as above.
I wish I could better explain with examples.
Ok, lemme try that too...
So your pattern is going to match abcd${PNUM}a but it is not going to match ab23${PNUM}a not abcd${PNUM}2.
First - ${PNUM} is just a variable that contains a string - any string.
So now, let's break down the egrep command chunk by chunk...
egrep ^
This means start looking for the pattern at the start of each line
egrep ^"[^0-9]+
The ^ inside the bracket before a pattern means NOT. 0-9 mean any digit 0 thru 9. So [^0-9] means look for any single character that is not a digit 0 thru 9. The + means match 1 or more instance of the preceding expression. So ^"[^0-9]+ means look for 1 or more characters in a row that are not digits 0 thru 9 starting at the beginning of each line.
egrep ^"[^0-9]+${PNUM} ${PNUM} is just a variable that contains a string - any string. So ^"[^0-9]+${PNUM} means look for the string ${PNUM} and return the line as long as there are no numbers preceding the string ${PNUM}.
egrep ^"[^0-9]+${PNUM}[^0-9]"
Finally we end with [^0-9] which says look for any single character that is not a digit 0 thru 9. And since there is no + after it, it says to only look at the next character after ${PNUM} is found. And it MUST find at least one non-numeric character.
For the sake of this discussion let's say that:
PNUM=junk
So - the egrep statement will scan the /bb/data/firmexbytes.dta file and return any lines that have the string "junk" in it with 1 or more characters before the string with none of them a number AND a character that exists immediately after "junk" that is not a number.
Here's another example:
PNUM=1234
In this case - the egrep statement will scan the /bb/data/firmexbytes.dta file and return any lines that have the string "1234" in it with 1 or more characters before the string with that are not a number AND a character that exists immediately after "1234" that is not a number.
Want to have fun? Put the following in a file called file1:
Then run
Of all those values found in the list above, egrep will only return these:
ajunka
abcjunkz
abcjunkxyz
abcjunkx12
because they are the only ones that have the string "junk" in it with 1 or more characters before the string with none of them a number AND a character that exists immediately after "junk" that is not a number.
abcjunkx12 should not be a surprise ...
Now change junk to 1234 both in the file and as the value of PNUM and try the egrep again.
Got it??? Should be clear as mud at this point....
I need to check the condition of a variable before the script continues and it needs to match a specific pattern such as EPS-03-0 or PDF-02-1.
The first part is a 3 or 4 letter string followed by a hyphen, then a 01,02 or 03 followed by a hyphen then a 0 or a 1.
I know I could check for every... (4 Replies)
Hi all,
I have a pattern matching problem in which i'm not sure how to attack.
Here is my problem:
I have a list of strings that appear in the following format:
String: LE_(1234 ABC)^2^ABC^DEFG
What i need to do is replace all the characters after the first ^ with blank. So the output... (2 Replies)
Hi guys
I have the following case statement in my script:
case $pn.$db in
*?.fcp?(db)) set f ${pn} cp ;;
*?.oxa?(oxa) ) set oxa $pn ;;
esac
Can somebody help me to understand how to interpret *?.fcp?(db)) or *?.oxa?(oxa) ?
I cannot figure out how in this case pattern maching... (5 Replies)
I inherited a script that contains the following sed command:
sed -n -e '/^.*ABCD|/p' $fileName | sed -e 's/^.*ABCD|//' | sed -e 's/|ABCD$//' > ${fileName}.tmp
What I'm wondering is whether ABCD has a special pattern matching value in sed, such as a character class similar or identical to .
... (9 Replies)
Hi Guys
I am trying to check if the pattern "# sign followed by one or several tabs till the end of the line" exists in my file. I am using the following query:
$ cat myfile | nawk '{if(/^#\t*$/) print "T"}'
Unfortunately it does not return the desired output since I know for sure that the line... (4 Replies)
Hi Guys,
I am trying to setup a check for the string using an "if" statement. The valid entry is only the one which contain Numbers and Capital Alpha-Numeric characters, for example: BA6F, BA6E, BB21 etc...
I am using the following "if" constract to check the input, but it fails allowing Small... (3 Replies)
Hi guys,
I have a file in the following format:
4222 323K 323L D222
494 8134 A023 A024
49 812A 9871 9872
492 A961 A962 A963
491 0B77 0B78 0B79
495 0B7A 0B7B 0B7C
4949 WER9 444L 999O
I need to grep the line... (5 Replies)
Hi,
I am writing a simple log parsing system and have a question on pattern matching.
It is simply grep -v -f patterns.re /var/log/all.log
Now, I have the following in my logs
Apr 16 07:33:17 ad-font-dc1 EvntSLog: AD-FONT-DC1/NTDS ISAM (700) - "NTDS (384) NTDSA: Online defragmentation... (5 Replies)
Hi guys,
got a problem here with sed on the command line.
If i have a string as below:
online xx:wer:xcv: sdf:/asdf/http:https-asdfd
How can i match the pattern "http:" and replace the start of the string to the pattern with null?
I tried the following but it doesn't work:
... (3 Replies)
i can only find the first occurance of a pattern how do i set it to loop untill all occurances have changed.
#! /usr/bin/perl
use POSIX;
open (DFH_FILE, "./dfh") or die "Can not read file ($!)";
foreach (<DFH_FILE>) {
if ($_ !~ /^#|^$/) {
chomp;
... (1 Reply)