02-12-2010
print 2 lines above regexp
I am on a Solaris 10 x86 system
sample code
before3
before2
before1
group
after1
after2
after3
I want to grab the second line above my regexp
regexp=group
I want to grab ONLY the before2 line
I have numerous sed and awk ways of grabbing X line below the regexp, but no luck yet getting awk or sed to work with a line X above regexp
I have tried sed, awk and grep and no luck. I can grab 1 line above the regexp but not 2 lines up.
I am interested in a one-liner to do the trick.
I think I will have to settle installing GNU grep.
awk
|awk '/group/ { print x }; { x=$0 }' # works for 1 line above
Well, I just found the answer, and this is it
|awk '{lines[NR] = $0} /group/ {print lines [NR-2]} {delete lines[NR-2]}'
plug in any number lines above
wow, I must have googled for hours on this one!
it would have been helpful if people also list which sed|awk|grep they are using as it may not work on every system.
FOr instance I could never get this one to work
| sed -n '/group/{g;2!p;};h'
I will still post this for others to see.
Also if there is a definitive sed/awk/grep guide on grabbing surrounding lines from a regexp please let me know.
single lines above/below regexp
numerous lines above/below regexp
I love to find numerous ways to do the same thing in *nix
The GNU grep does sound very flexible. Does anyone know where I can download it for Solaris 10 x86?
And does GNU grep come bundled in the GNU coreutils by chance or is it a standalone package?
Thanks
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
Hi,
How do i Print anything after a ':'
Ex :
file1: 1235131(rs32553)
I want to print out "1235131(rs32553)"
how do i do it. I know we can do this using awk but looking for the right syntax.
Any help appreciated.
Thanks,
Ram (7 Replies)
Discussion started by: ramky79
7 Replies
2. UNIX for Dummies Questions & Answers
Good Day,
Im new to scripting especially awk and sed. I just would like to ask help from you guys about a sed command that prints the line immediately after a regexp, but not the line containing the regexp.
sed -n '/regexp/{n;p;}' filename
What if my regexp is 3 word or a sentence. Im... (3 Replies)
Discussion started by: ownins
3 Replies
3. Shell Programming and Scripting
Hi all,
This should be very easy but I can't figure it out...
I have a file that looks like this:
@SRR057408.1 FW8Y5CK02R652T length=34
AGCAGTGGTATCAACGCAGAGTAAGCAGTGGTAT
+SRR057408.1 FW8Y5CK02R652T length=34
FIIHFF6666?=:88@@@BBD:::?@ABBAAA>8
@SRR057408.2 FW8Y5CK02TBMHV length=52... (1 Reply)
Discussion started by: kmkocot
1 Replies
4. Shell Programming and Scripting
Hi,
I have a file, say files_list, as below (o/p of ls -R cmd)
$ cat files_list
/remote/dir/path/to/file:
sub-dir1
sub-dir2
sub-dir3
...
/remote/dir/path/to/file/sub-dir1:
remote_file1.csv.tgz
<blank line 1>
/remote/dir/path/to/file/sub-dir2:
remote_file2.csv.tgz
<blank... (3 Replies)
Discussion started by: dips_ag
3 Replies
5. Shell Programming and Scripting
Hello all
According to the following file (orignal one contains 200x times the same structure...) I was wondering if someone could help me to print <byte>??</byte> values
example, running this script/command like
./script.sh xxapp
I would expect as output: 102 116 112
./script.sh xxapp2... (2 Replies)
Discussion started by: cabrao
2 Replies
6. Shell Programming and Scripting
Hi All
I'm trying to extract the line just above a regexp and all lines after this.
I'm currently doing this in two steps
sed -n -e "/^+---/{g;p;}" -e h oldfile.txt > modified.txt
sed -e "1,/^+---/d" -e "/^$/d" oldfile.txt >>modified.txt
Sample
sometext will be here
sometext will be... (3 Replies)
Discussion started by: Celvin VK
3 Replies
7. Shell Programming and Scripting
I'm looking for a way to print the 4th line back from a regular expression. Kind of like the below but it has to be the 4th line before the regexp.
Print the line immediately before regexp, but not the line containing the regexp.
sed -n '/regexp/{g;1!p;};h'
here is an example of logs(i... (11 Replies)
Discussion started by: senormarquez
11 Replies
8. Shell Programming and Scripting
How to use regexp to print out repetitive pattern in awk?
$ awk '{print $0, "-\t-\t-\t-\t-\t-\t-\t-\t-\t-\t-\t-"}' output:
- - - - - - - - - - - -I tried following which does not give what I want, of course.
awk '{print $0, "-\t{11}-"}'
output:
- ... (10 Replies)
Discussion started by: yifangt
10 Replies
9. UNIX for Beginners Questions & Answers
I have a directory of files, I can show the number of lines in each file and order them from lowest to highest with:
wc -l *|sort
15263 Image.txt
16401 reference.txt
40459 richtexteditor.txt
How can I also print the number of unique lines in each file?
15263 1401 Image.txt
16401... (15 Replies)
Discussion started by: spacegoose
15 Replies
10. UNIX for Beginners Questions & Answers
Hi All,
I need to print the characters in the previous line just before the regular expression match
Please have a look at the input file as attached
I need to match the regular expression ^ with the character of the previous like and also the pin numbers
and the output file should be like... (6 Replies)
Discussion started by: kshitij
6 Replies
LEARN ABOUT DEBIAN
ppi::token::regexp::match
PPI::Token::Regexp::Match(3pm) User Contributed Perl Documentation PPI::Token::Regexp::Match(3pm)
NAME
PPI::Token::Regexp::Match - A standard pattern match regex
INHERITANCE
PPI::Token::Regexp::Match
isa PPI::Token::Regexp
isa PPI::Token
isa PPI::Element
SYNOPSIS
$text =~ m/match regexp/;
$text =~ /match regexp/;
DESCRIPTION
A "PPI::Token::Regexp::Match" object represents a single match regular expression. Just to be doubly clear, here are things that are and
aren't considered a match regexp.
# Is a match regexp
/This is a match regexp/;
m/Old McDonald had a farm/eieio;
# These are NOT match regexp
qr/This is a regexp quote-like operator/;
s/This is a/replace regexp/;
METHODS
There are no methods available for "PPI::Token::Regexp::Match" beyond those provided by the parent PPI::Token::Regexp, PPI::Token and
PPI::Element classes.
Got any ideas for methods? Submit a report to rt.cpan.org!
SUPPORT
See the support section in the main module.
AUTHOR
Adam Kennedy <adamk@cpan.org>
COPYRIGHT
Copyright 2001 - 2011 Adam Kennedy.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
The full text of the license can be found in the LICENSE file included with this module.
perl v5.10.1 2011-02-26 PPI::Token::Regexp::Match(3pm)