Visit Our UNIX and Linux User Community


assitance with sed (repeating patterns)


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers assitance with sed (repeating patterns)
# 1  
Old 02-02-2008
assitance with sed (repeating patterns)

hi,
I need to write a command to look into a text file, find lines that contain patterns of three or more characters that repeat once, and put perenthesizes around them. so for example, the line "123test123" would be changed to "(123)test(123)" and "abcdeabcde" to "(abcde)(abcde)".
any hint is appreciated.
# 2  
Old 02-02-2008
Hello,

I can help you with 1st query , where you are trying to change "123test123" to "(123)test(123)" .

This can be done easily using SED .

----------
Syntax: sed -e 's/\(123\)/(\1)/g' :--> g parameter will replace the instance globally in file.

Example: echo 123test123 | sed -e 's/\(123\)/(\1)/g'
Output : (123)test(123)
----------

Try this out in your file and let us know how it goes at your end. Smilie

Thanks,
# 3  
Old 02-02-2008
hi thanks for the reply, but I need the sed command to find all repeating patterns itself and put them inside (). I can not specify the pattern for it to look for.
it can be 123 or abc or anything that is repeated through the line.
thank you
# 4  
Old 02-02-2008
Hello Metalwarrior,

Do you have any sigle pattern to replace ?

Or any patter which contains 3 or more than characters ?

Thanks,
# 5  
Old 02-02-2008
ok let's say I have this line for example:
thispatternthatpattern
I want the sed automatically find the the repeated patterns and put them in (). so after the chagne it would look like this,
this(pattern)that(pattern).
# 6  
Old 02-02-2008
If you have only one or limited patter to replace then it can be done easily with sed as explained earlier.

Please follow the steps.

--------
1) Save thispatternthatpattern in a file called test
2) Now according to you thispatternthatpattern should be converted to this(pattern)that(pattern) .
3) Now type following command
----------
sed -i 's/patter/(pattern)/g' test
-----------

4) See the o/p using "cat test". It should be as pasted below.

bash-3.1$ cat test
this(pattern)nthat(pattern)n

--------

Thanks,
# 7  
Old 02-02-2008
hi tnx but that's not what I am looking for.
like I said I dont want to specify then pattern for sed.
I want it automatically find all the patterns that are repeated and do something with them. the regular expression would be something like this:
'.*\{3,\}\.*\1'
but I can only save the whole thing into register1, I cant distinguish between the first pattern, repeated pattern and possible contents between them.
 

Previous Thread | Next Thread
Test Your Knowledge in Computers #448
Difficulty: Medium
Quirky Linux and Puppy Linux were both created by Barry Kauler.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Indexing each repeating pattern of rows in a column using awk/sed

Hello All, I have data like this in a column. 0 1 2 3 0 3 4 5 6 0 1 2 3 etc. where 0 identifies the start of a pattern in my data. So I need the output like below using either awk/sed. 0 1 (2 Replies)
Discussion started by: ks_reddy
2 Replies

2. Shell Programming and Scripting

awk and or sed command to sum the value in repeating tags in a XML

I have a XML in which <Amt Ccy="EUR">3.1</Amt> tag repeats. This is under another tag <Main>. I need to sum all the values of <Amt Ccy=""> (Ccy may vary) coming under <Main> using awk and or sed command. can some help? Sample looks like below <root> <Main> ... (6 Replies)
Discussion started by: bk_12345
6 Replies

3. Shell Programming and Scripting

Deriving unique entries from multiple repeating patterns

Dear All, I have a below one column data.(example) Col1 1 2 . . 25 8 9 25 1 2 . . 25 Where each entry(row) is a number from 1-25, but in place whereever mentioned with . we have all the entries 1-25, but some places where ever no . like in 8 9 25 I have only 3 entries. No I... (14 Replies)
Discussion started by: ks_reddy
14 Replies

4. Shell Programming and Scripting

Sed replace using same pattern repeating multiple times in a line

Sed replace using same pattern repeating multiple times in a line I have text like below in a file: I am trying to replace the above line to following How can I acheive this? I am able to do it if the occurrence is for 1 time: But If I try like below I am getting like this: I have to... (4 Replies)
Discussion started by: sol_nov
4 Replies

5. UNIX for Dummies Questions & Answers

Using sed command to remove multiple instances of repeating headers in one file?

Hi, I have catenated multiple output files (from a monte carlo run) into one big output file. Each individual file has it's own two line header. So when I catenate, there are multiple two line headers (of the same wording) within the big file. How do I use the sed command to search for the... (1 Reply)
Discussion started by: rebazon
1 Replies

6. UNIX for Dummies Questions & Answers

Using SED to delete between two blocks.....and then repeating.

Hi All I'm still on my slow and painful self teach learning experience with SED. My latest issue is getting my head around how best to do the following. I have a file that's created using iwlist that I want to chop up into paragraphs then only keep the ones I see as potential threats. I... (3 Replies)
Discussion started by: Bashingaway
3 Replies

7. Shell Programming and Scripting

Sed Replace repeating pattern

Hi, I have an sqlplus output file using the character ';' as a delimiter and I would like to replace the fields without datas (i.e delimited by ';;') by ';0;' Example: my sqlplus output: 11;22;33;44;;;77;; What I would like to have: 11;22;33;44;0;0;77;0; Thanks in advance for your... (2 Replies)
Discussion started by: popesk
2 Replies

8. Shell Programming and Scripting

Problem with Sed when repeating characters

Hi all, I'm learning sed (and regular expressions) - My first little program is to replace 3 numbers in a row with 'XXX' This is what I am trying: echo '511' | sed 's/{3}/XXX/' Here is the output: defunct-macbook-pro:~ defunct$ echo '511' | sed 's/{3}/XXX/' 511For some reason, it doesnt... (2 Replies)
Discussion started by: Defunct
2 Replies

9. Shell Programming and Scripting

Sed Replace a repeating character

I have a text file and every line ends in |^ |^^ |^^^ |^^^^ I need to use sed to make all lines end it |^ regardless of the amount of carrots. The code i was using is: cat FILE | sed 's/\^\^\^/\^/g' But then they threw that curveball at me. Also is there a way to... (2 Replies)
Discussion started by: insania
2 Replies

10. UNIX for Advanced & Expert Users

need assistance: sed and repeating patterns

hi, I need to write a command with sed to find all the lines in a file that contain patterns of three or more characters that repeat once and put them inside perenthezes. I cannot tell sed what pattern to look for. it should find repeated patterns automatically. example:... (1 Reply)
Discussion started by: metalwarrior
1 Replies

Featured Tech Videos