Match exact String with sed command


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Match exact String with sed command
# 1  
Old 02-10-2017
Tools Match exact String with sed command

I have a workaround to the problem i m posting, however if someone wants to look at my query and respond ... i will appreciate.

This is in reference to this thread -> Extract between two Exact matched strings.

I have data.txt as below.
Quote:
Start_of_DISK_info:/u
Disk: /u
CURRENT=81
End_of_DISK_info:/u

Start_of_DISK_info:/u/tmp
Disk: /u/tmp
CURRENT=1
End_of_DISK_info:/u/tmp
I have a variable as below.
Code:
lines=/u

I wish to EXACT match and extract data From Start_of_DISK_info:$lines to End_of_DISK_info:$lines as shown below.

Quote:
Start_of_DISK_info:/u
Disk: /u
CURRENT=81
End_of_DISK_info:/u
I tried this as a solution
Code:
sed -n "\|Start_of_DISK_info:$lines$|,\|End_of_DISK_info:$lines$|p" data.txt

But, it is matching both /u and /u/tmp thus extracting the whole data.txt.

So, it is not doing an exact match which is what i was looking for.

Can you tweak this command to get the desired results?
# 2  
Old 02-10-2017
sed is often a difficult choice for anything stretching across multiple lines. awk has a special setting, RS="", to read entire blocks of text separated by blank lines at once.

Code:
$ awk 'index($0, "Start_of_DISK_info:"S"\n")==1' RS="" ORS="\n\n" S="/u" data

Start_of_DISK_info:/u
Disk: /u
CURRENT=81
End_of_DISK_info:/u

$

You'd have S="$lines"
# 3  
Old 02-10-2017
Quote:
Originally Posted by mohtashims
So, it is not doing an exact match which is what i was looking for.
First, you need to define what "exact match" means for you: actually it matched the exact phrase you were searching for - the line contained just something else besides of what you matched. What you are looking for is not a "exact match" but an "exact match with nothing else to follow", yes?

Quote:
Originally Posted by mohtashims
Can you tweak this command to get the desired results?
Yes, i can and so can you. Reading the above should make it obvious: anchor the regexp to the end of line.

I hope that helps.

bakunin
# 4  
Old 02-10-2017
Quote:
Originally Posted by Corona688
sed is often a difficult choice for anything stretching across multiple lines. awk has a special setting, RS="", to read entire blocks of text separated by blank lines at once.

Code:
$ awk 'index($0, "Start_of_DISK_info:"S"\n")==1' RS="" ORS="\n\n" S="/u" data

Start_of_DISK_info:/u
Disk: /u
CURRENT=81
End_of_DISK_info:/u

$

You'd have S="$lines"
Believe me it does not return any output. I am on
Code:
uname -a
SunOS mymac 5.11 11.2 sun4v sparc sun4v

# 5  
Old 02-10-2017
Show your actual input, please. Attach it if necessary.
# 6  
Old 02-10-2017
Also, try nawk.
# 7  
Old 02-10-2017
You can use sed to process more than one line with the command N to append the next line to the "pattern" space (usual area that can be searched or modified) and the 2nd line will be separated from the 1st by a newline "\n". If you use this you might need to put your sed commands in a separate file rather than the command line.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Issue with sed command does not replace exact string matched

I have a file change.sed more change.sed I fire the below command inorder to replace "190.169.11.15" with "10.4.112.240" in proxy.logsed -f change.sed proxy.log proxy.log has the below entry more proxy.log The command replaces both 190.169.11.15 & 190.169.11.155 as below: I am expecting... (17 Replies)
Discussion started by: mohtashims
17 Replies

2. Shell Programming and Scripting

Help match the exact string

I just want to match "binutils1_test" only, and print the match line only lyang001@lyang001-OptiPlex-9010:/tmp$ cat file zbinutils1_test bbinutils1_test binutils1_test w-binutils1_test lyang001@lyang001-OptiPlex-9010:/tmp$ cat file |grep -w 'binutils1_test' ... (7 Replies)
Discussion started by: yanglei_fage
7 Replies

3. Shell Programming and Scripting

Get the exact match of the string!

Hi All, I am breaking my head in trying to get a command that will exactly match my given string. I have searched net and found few of the options - grep -F $string file grep -x $string file grep "^${string}$" file awk '/"${string}"/ {print $0}' file strangely nothing seems to... (3 Replies)
Discussion started by: dips_ag
3 Replies

4. Shell Programming and Scripting

Exact match using sed

I would like replace all the rows in a file if a row has an exact match to number say 21 in a tab delimited file. I want to delete the row only if it has 21 any of the rows but it should not delecte the row that has 542178 or 563421. I tried this sed '/\<21\>/d' ./inputfile > output.txt ... (7 Replies)
Discussion started by: Kanja
7 Replies

5. Shell Programming and Scripting

QUESTION1: grep only exact string. QUESTION2: find and replace only exact value with sed

QUESTION1: How do you grep only an exact string. I am using Solaris10 and do not have any GNU products installed. Contents of car.txt CAR1_KEY0 CAR1_KEY1 CAR2_KEY0 CAR2_KEY1 CAR1_KEY10 CURRENT COMMAND LINE: WHERE VARIABLE CAR_NUMBER=1 AND KEY_NUMBER=1 grep... (1 Reply)
Discussion started by: thibodc
1 Replies

6. Shell Programming and Scripting

Finding exact match string

Hi All, I'm writing unix script, it should find exact matching in search string. Looks simple but when i started i'm stuck to find the exact match character string. The unix script reads the records from DB Table. The table will have values something likes these Feed : A Feed File name :... (3 Replies)
Discussion started by: luckybalaji
3 Replies

7. Shell Programming and Scripting

exact string match ; search and print match

I am trying to match a pattern exactly in a shell script. I have tried two methods awk '/\<mpath${CURR_MP}\>/{print $1 $2}' multipath perl -ne '/\bmpath${CURR_MP}\b/ and print' /var/tmp/multipath Both these methods require that I use the escape character. I am guessing that is why... (8 Replies)
Discussion started by: bash_in_my_head
8 Replies

8. Shell Programming and Scripting

sed to match only exact string only in all occurences

Dear Friends, Anybody knows how to match exact lines only in multilinear. Input file: apple orange orange apple apple orange Desired output: fruit orange apple fruit i used the command (1 Reply)
Discussion started by: vasanth.vadalur
1 Replies

9. Shell Programming and Scripting

Searching for exact match in a string ??

Hi I have a string of the form XY_X1998.10.500. I want to check in a script that the middle part is always 10. How to achieve this? e.g the input can be XY_X1998.20.500 OR XY_X1998.50.500 OR XY_X1998.10.500. I have to print Yes everytime the middle value is 10 and NO when the middle... (2 Replies)
Discussion started by: skyineyes
2 Replies

10. UNIX for Dummies Questions & Answers

exact string match in a word

Hi all, Is anyone able to help with the following query? I have an input file with several lines of words, e.g. "hellolaylahello" "hellohellohellolayla" I want to search for the exact string "hello" in each line and display: 2 "hellolaylahello" 3 "hellohellohellolayla" I... (11 Replies)
Discussion started by: dr_sabz
11 Replies
Login or Register to Ask a Question