Hi Bartus11,
thanks very much for the code.
I am new to Perl, it would be greatly helpful if you could please explain me your code.
Thanks,
Niel.
Well I don't know if it would make much sense, because this code is using some quite advanced regex techniques, like look ahead or sequential matching, which require some regex understanding. If you are still interested I can break it down for you.
After giving it a bit of thought I decided to do it anyway
-n - load file's contents into $_ variable
-0 - load whole file into $_ variable. Without that perl would divide the file into lines and process them one by one
-e - execute script while (/NAME.*?((?=NAME)|(?=$))/sg) - keep going through $_ variable (g option), matching blocks of it that start with "NAME" and that have "NAME" right after their end. This is the look ahead part (?=NAME). To match also last block in variable (file), which is starting with "NAME", but there is no "NAME" at the end, there is alternative look ahead match (?=$), that means end of the variable. /s regex option allows . to match newline characters, which allow regex to match through multiple lines. .*? matches non-greedily all the characters that are between "NAME" and before next "NAME". If ? was missing in this expression, regex would perform greedy match, which would match whole variable in single run. While's body is quite easy. $x=$& is assigning recent match to $x variable. It is done to avoid loosing it's contents when /LOCKED/ is run. So now $x consist of block of lines extracted from $_ variable (file's contents), that start with "NAME" and ends just before next "NAME". This block is tested by $x=~/LOCKED/ expression, to check if it contains word LOCKED, and if it does, then print $x is printing it on screen.
Hi
I have a file (say 'file1')and I want to search for a first occurence of pattern (say 'ERROR') and print ten lines in the file below pattern. I have to code it in PERL and I am using Solaris 5.9.
I appreciate any help with code
Thanks
Ammu (6 Replies)
I have in a file
domain.com. 1909 IN A 1.22.33.44
domain.com. 1909 IN A 22.33.44.55
ns1.domain.com. 1699 IN A 33.44.55.66
ns2.domain.com. 1806 IN A 77.77.66.66
I need to "grep" or "awk" out the lines starting with domain.com. as follows.
domain.com. 1909 IN A 1.22.33.44
domain.com.... (3 Replies)
I am using Solaris, I want to print
3 lines before pattern match
pattern
5 lines after pattern match
Pattern is abcd to be searched in a.txt. Looking for the solution in sed/awk/perl. Thanks ..
Input File a.txt:
=================
1
2
3
abcd
4
5
6
7
8 (7 Replies)
I need to print the lines that do not match a pattern. I tried using grep -v and sed -n '/pattern/!p', but both of them are not working as I am passing the pattern as variable and it can be null some times.
Example
........ abcd......
.........abcd......
.........abcd......... (4 Replies)
Data:
Pattern Data Data Data
Data Data Data
Data Data Data
...
With awk, how do I print the pattern matching line, then the subsequent lines following the pattern matching line. Varying number of lines following the pattern matching line. (9 Replies)
Hi experts , im new to Unix,AWK ,and im just not able to get this right.
I need to match for some patterns if it matches I need to print the next few words to it.. I have only three such conditions to match… But I need to print only those words that comes after satisfying the first condition..... (2 Replies)
Hello Experts , require help . See below output:
File inputs
------------------------------------------
Server Host = mike
id rl images allocated last updated density
vimages expiration last read <------- STATUS ------->... (4 Replies)
The intended result should be :
PDF converters
'empty line'
gpdftext and pdftotext?xml version="1.0"?>
xml:space="preserve"><note-content version="0.1" xmlns:/tomboy/link" xmlns:size="http://beatniksoftware.com/tomboy/size">PDF converters
gpdftext and pdftotext</note-content>... (9 Replies)