Replacing text between two square brackets


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Replacing text between two square brackets
# 1  
Old 12-02-2010
Replacing text between two square brackets

hi guys,
i'm writing a script that looks for a unquie id in a file and replaces a string between two square brackets on the same line as the unquie id:

Code:
.......
.......
0001  zz 43242 [replace this text] name
0002  sd 65466 [UK] country
.......
.......

how can i find line with id 0001 and then replace only the text between the brackets?


Thanks in advance,
Zaff
# 2  
Old 12-02-2010
Code:
# echo "0001  zz 43242 [replace this text] name" | sed '/^0001/s/\[.*\]/anything/'
0001  zz 43242 anything name

Code:
# cat input
0001  zz 43242 [replace this text] name
0002  sd 65466 [UK] country
0001  zz 43242 [replace this text] name
0001  zz 43242 [replace this text] name
0002  sd 65466 [UK] country
0002  sd 65466 [UK] country
0001  zz 43242 [replace this text] name
0002  sd 65466 [UK] country
0002  sd 65466 [UK] country
0002  sd 65466 [UK] country

# sed '/^0001/s/\[.*\]/anything/' input
0001  zz 43242 anything name
0002  sd 65466 [UK] country
0001  zz 43242 anything name
0001  zz 43242 anything name
0002  sd 65466 [UK] country
0002  sd 65466 [UK] country
0001  zz 43242 anything name
0002  sd 65466 [UK] country
0002  sd 65466 [UK] country
0002  sd 65466 [UK] country

#

This User Gave Thanks to ctsgnb For This Post:
# 3  
Old 12-02-2010
...for further clarity:
what i'm trying to do is replace the string between the brackets with its MD5 value. I'm basically anonymising the data. I can only search the file using the id, as i have no idea what the string-to-be-replaced is.

Regards,
Zaff

---------- Post updated at 04:58 PM ---------- Previous update was at 04:55 PM ----------

Thanks for the quick response!
.......and how about if i wanted to keep the square brackets?

Thanks,
Zaff

---------- Post updated at 05:01 PM ---------- Previous update was at 04:58 PM ----------

...sorry, one more thing:
how can i assign the value between the brackets to a variable?

Thanks,
Zaff
# 4  
Old 12-02-2010
Please give more clue :
what is your input ?
what is your expected output ?
What do you want to do with the MD5 (log it into a file ? sometyhing else ?)
# 5  
Old 12-02-2010
Quote:
Originally Posted by zaff
...for further clarity:
what i'm trying to do is replace the string between the brackets with its MD5 value. I'm basically anonymising the data. I can only search the file using the id, as i have no idea what the string-to-be-replaced is.

.......and how about if i wanted to keep the square brackets?
Code:
MD5="New Text" 

sed '/0001/ s/\[.*]/['"$MD5]"'/' file

Quote:
Originally Posted by zaff
how can i assign the value between the brackets to a variable?
Code:
var=$(sed -n '/0001/ s/.*\[\(.*\)].*/\1/p' file)

# 6  
Old 12-02-2010
basically all i need is the following:

1. command similar to one u provided, but assigning the string in the brackets to a variable. i will then use this variable to generate an md5 (this i can do).

2. replace the content of the brackets with the md5. This command u have already kindly provided:

Code:
echo "0001  zz 43242 [replace this text] name" |sed '/^0001/s/\[.*\]/my_md5/'

........only thing is, i need the brackets to remain as they are and not be removed along with the original string.

Regards,
Zaff
# 7  
Old 12-03-2010
Quote:
Originally Posted by zaff
1. command similar to one u provided, but assigning the string in the brackets to a variable. i will then use this variable to generate an md5 (this i can do).
Code:
var=$(sed -n '/0001/ s/.*\[\(.*\)].*/\1/p' file)

Quote:
Originally Posted by zaff
2. replace the content of the brackets with the md5. This command u have already kindly provided
Code:
MD5="MD5 value"

sed '/0001/ s/\[.*]/['"$MD5]"'/' file

This User Gave Thanks to Franklin52 For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Sort a text file based on names in square brackets

Hi all, I have a text file similar to this: Text More text Etc Stuff That Is Needed Etc Etc This contains over 70 entries and each entry has several lines of text below the name in square brackets. (5 Replies)
Discussion started by: Scally
5 Replies

2. Shell Programming and Scripting

IF statement with square brackets

Hi All, Hope you all are doing good. Yesterday in my project i came across a scenario which i can not guess why it was working in one region and why it was not in another region. Please find my issue below. I am using AIX version 6.0 of UNIX in my project, in shell scripting i have the... (1 Reply)
Discussion started by: mad man
1 Replies

3. Shell Programming and Scripting

Problem with occurence of square brackets

Hello all, I have the following problem: $ cat infile this is spam and i need this too this is spam and i need this too $ perl -nwe '$_ =~ /]+ \]+)\]\]*\]? (\+)$/; print "$1 - $2\n";' infile i need this - too i need this - and i need this too I am not sure how many occurences of... (13 Replies)
Discussion started by: zaxxon
13 Replies

4. Shell Programming and Scripting

Extract the text between the nth occurrence of square brackets

Please can someone help with this? I have a file with lines as follows: word1 word2 word3 word4 word5 word6 word7 word8 word1 word2 word3 word4 word5 word6 word7 word8 word1 word2 word3 word4 word5 word6 word7 word8 word1 word2 word3 word4 word5 word6 word7 word8 When I use the... (7 Replies)
Discussion started by: Subhadeep_Sahu
7 Replies

5. UNIX for Dummies Questions & Answers

Single or double square brackets

Hi frieds, I don't understand the difference between single square bracket and double square brackets in a IF condition. Ex. if ; then RETURNJOB=1 else RETURNJOB=0 fi It run, but this if ]; then RETURNJOB=1 else RETURNJOB=0 fi (4 Replies)
Discussion started by: dogshort
4 Replies

6. Shell Programming and Scripting

Extract text between two square [..] brackets

Hi All, After searching about this, I could find some solutions but I am not sure why it is not working in my case. I have a text file with contents between two square brackets. The text file looks like this: Use tags when you post any code so others can easily read your code. You can... (2 Replies)
Discussion started by: shoaibjameel123
2 Replies

7. Shell Programming and Scripting

Delete text between square brackets and also delete those square brackets using sed or awk

Hi All, I have a text file which looks like this: computer programming systems engineering I want to get rid of these square brackets and also the text that is inside these brackets. So that my final text file looks like this: computer programming systems engineering I am using... (3 Replies)
Discussion started by: shoaibjameel123
3 Replies

8. Shell Programming and Scripting

Double square brackets question

Hi, I just came across an interesting shell script syntax like the one below: ] && (trap 'rm -rf ${WORK_DIR}/*.$$; echo "\n\nInterrupted !!\n\n"; exit 4' 1 2 3 15) Can someone please explain the code snippet above? The trap command bit is fine but ] && is the hazy part. Generally we use an... (2 Replies)
Discussion started by: King Nothing
2 Replies

9. Shell Programming and Scripting

WHy the double square brackets?

One of the senior administrators gave me a shell script to modify and it begins as follows: if ] && ] {more code follows} Why the double square brackets? (10 Replies)
Discussion started by: mojoman
10 Replies

10. UNIX for Dummies Questions & Answers

square brackets

I would like to substitute a phrase which contains square brackets. change TO how? Thanks (2 Replies)
Discussion started by: gilead29
2 Replies
Login or Register to Ask a Question