Match exact String with sed command


Login or Register for Dates, Times and to Reply

 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Match exact String with sed command
# 1  
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  
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  
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  
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  
Show your actual input, please. Attach it if necessary.
# 6  
Also, try nawk.
# 7  
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 for Dates, Times and to Reply

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #964
Difficulty: Medium
HTML4 became a W3C Recommendation in 1994.
True or False?

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

Featured Tech Videos