To print from the first line until pattern is matched


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users To print from the first line until pattern is matched
# 1  
Old 02-11-2015
To print from the first line until pattern is matched

Hi I want to print the line until pattern is matched.

I am using below code:

Code:
sed -n '1,/pattern / p' file

It is working fine for me , but its not working for exact match.

Code:
sed -n '1,/^LAC$/ p' file

Input:
Code:
LACC	FEGHRA		0
LACC	FACAF		0
LACC	DARA		0
LACC	TALAC		0
LAC 	ILACTC		0
LACC	Kerzner		0
LAAS	TOTAL		0
LACC	LAC		0
LACC	IRSI		0
LACC	Asocianes CTO	0
LACC	Kerzner		0

Expected Output:
Code:
LACC	FEGHRA		0
LACC	FACAF		0
LACC	DARA		0
LACC	TALAC		0
LAC 	ILACTC		0

# 2  
Old 02-11-2015
That is because $ would match end of line and not end of string. Depending on the exact nature of the input you could match for space/tab instead, or just not a letter:

Code:
sed -n '1,/^LAC[^a-zA-Z]/p' file

This User Gave Thanks to Walter Misar For This Post:
# 3  
Old 02-11-2015
Quote:
Originally Posted by Walter Misar
That is because $ would match end of line and not end of string. Depending on the exact nature of the input you could match for space/tab instead, or just not a letter:

Code:
sed -n '1,/^LAC[^a-zA-Z]/p' file


And if the Input is like below:
Code:
LACC	FEGHRA		0
LACC	FACAF		0
LACC	DARA		0
LACC	TALAC		0
LACC 	ILACTC		0
LACC	Kerzner		0
LAAS	TOTAL		0
LACC	LAC		0
LACC	IRSI		0
LACC	Asocianes CTO	0
LACC	Kerzner		0

Then Can I achive the below output:

Code:
LACC	FEGHRA		0
LACC	FACAF		0
LACC	DARA		0
LACC	TALAC		0
LACC 	ILACTC		0
LACC	Kerzner		0
LAAS	TOTAL		0
LACC	LAC		0

Thank you
# 4  
Old 02-11-2015
Although this
Code:
sed -n '1,/    LAC/p' file

will work with the sample given, try this
Code:
sed -rn '1,/^[^         ]+[     ]+LAC[  ]+/p' file

to be on the safe side (within the square brackets, there's a space and a <TAB> char). If your sed doesn't support the -r (or -E) option, replace the + with \+.
This User Gave Thanks to RudiC For This Post:
# 5  
Old 02-11-2015
Hi,
with gnu sed, we can use begin mark and end mark word:
Code:
sed -n '1,/\<LAC\>/p' file

Regards.
# 6  
Old 02-11-2015
Code:
sed -n '1,/\<LAC\>/p' file

This doesn't work for me.

Only the below code is working.

Code:
sed -n '1,/    LAC/p' file

# 7  
Old 02-11-2015
Ok, then a posix solution:
Code:
sed -n '1,/[^[:alnum:]_]LAC[^[:alnum:]_]/p' file

PS: posix definiton of word class is [A-Za-z0-9_]

Regards.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Find matched pattern and print all based on certain conditions

Hi, I am trying to extract data based on certain conditions. My sample input file as below:- lnc-2:1 OnePiece tra_law 500 688 1 . . g_id "R792.8417"# tra_law_id "R792.8417.1"# g_line "2.711647"# KM "8.723820"# lnc-2:1 OnePiece room 500 510 1 . . g_id "R792.8417"# tra_law_id "R792.8417.1"#... (7 Replies)
Discussion started by: bunny_merah19
7 Replies

2. Shell Programming and Scripting

How to print previous line of multiple pattern matched line?

Hello, I have below format log file, Comparing csv_converted_files/2201/9747.1012H67126.5077292103609547345.csv and csv_converted_files/22019/97447.1012H67126.5077292103609547345.csv Comparing csv_converted_files/2559/9447.1012H67126.5077292103609547345.csv and... (6 Replies)
Discussion started by: arvindshukla81
6 Replies

3. Shell Programming and Scripting

Regex: print matched line and exact pattern match

Hi experts, I have a file with regexes which is used for automatic searches on several files (40+ GB). To do some postprocessing with the grep result I need the matching line as well as the match itself. I know that the latter could be achieved with grep's -o option. But I'm not aware of a... (2 Replies)
Discussion started by: stresing
2 Replies

4. Shell Programming and Scripting

Print line between two patterns when a certain pattern matched

Hello Friends, I need to print lines in between two string when a keyword existed in those lines (keywords like exception, error, failed, not started etc). for example, input: .. Begin Edr ab12 ac13 ad14 bc23 exception occured bd24 cd34 dd44 ee55 ff66 End Edr (2 Replies)
Discussion started by: EAGL€
2 Replies

5. Shell Programming and Scripting

Insert certain field of matched pattern line above pattern

Hello every, I am stuck in a problem. I have file like this. I want to add the fifth field of the match pattern line above the lines starting with "# @D". The delimiter is "|" eg > # @D0.00016870300|0.05501020000|12876|12934|3||Qp||Pleistocene||"3 Qp Pleistocene"|Q # @P... (5 Replies)
Discussion started by: jyu3
5 Replies

6. Shell Programming and Scripting

Print only matched pattern in perl

Hi, I have script like below: #!/usr/local/bin/perl use strict; use warnings; while (<DATA>) { ( my ($s_id) = /^\d+\|(\d+?)\|/ ) ; if ( $s_id == 1 ){ s/^(.*\|)*.*ABC\.pi=(+|+)*.*ABC\.id=(\d+|+).*$/$1$2|$3/s; print "$1$2|$3\n"; (2 Replies)
Discussion started by: sol_nov
2 Replies

7. Shell Programming and Scripting

print the whole row in awk based on matched pattern

Hi, I need some help on how to print the whole data for unmatched pattern. i have 2 different files that need to be checked and print out the unmatched patterns into a new file. My sample data as follows:- File1.txt Id Num Activity Class Type 309 1.1 ... (5 Replies)
Discussion started by: redse171
5 Replies

8. Shell Programming and Scripting

Help required on joining one line above & below to the pattern matched string line.

Hi Experts, Help needed on joining one line above & below to the pattern matched string line. The input file, required output is mentioned below Input file ABCD DEFG5 42.0.1-63.38.31 KKKK iokl IP Connection Available ABCD DEFG5 42.0.1-63.38.31 ... (7 Replies)
Discussion started by: krao
7 Replies

9. Shell Programming and Scripting

print last matched pattern using perl

Hi, If there exist multiple pattern in a file, how can I find the last record matching the pattern through perl. The below script searches for the pattern everywhere in an input file. #! /usr/bin/perl -s -wnl BEGIN { $pattern or warn"Usage: $0 -pattern='RE' \n" and exit 255;... (5 Replies)
Discussion started by: er_ashu
5 Replies

10. Shell Programming and Scripting

SED: delete and print the only exact matched pattern

I am really need help with the regular expression in SED. From input file, I need to extract lines that have the port number (sport or dport) as defined. The input file is something like this time=1209515280-1209515340 dst=192.168.133.202 src=208.70.8.23 bytes=2472 proto=6 sport=80 dport=1447... (6 Replies)
Discussion started by: new_buddy
6 Replies
Login or Register to Ask a Question