Wildcard use with SED command


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Wildcard use with SED command
# 1  
Old 10-11-2011
Wildcard use with SED command

Hello,

I am fairly new to Linux in general and I am trying to use SED to make some replacements in a file. Below is sample of what the file is like.

Code:
<Grouping id="024"><Source>ABC</Source><GroupingKey>000000000816</GroupingKey></Grouping><Grouping id="027"><Source>ABC</Source><GroupingKey>000000000798</GroupingKey></Grouping><Grouping id="764"><Source>ABC</Source><GroupingKey>000000000811</GroupingKey></Grouping>

I am looking to change the information in the <GroupingKey> tag so 000000000816 becomes 000000001816. The number is always 12 digits in length and I am just looking to add a 1 in front of the current number. I have been trying to use sed, but I am running into two issues.
1. The file has no line returns so once sed does the one replacement in that line it creates a new file with just the one entry.
2. I am not sure how to just add the 1 in front of the current number in the GroupingKey tag.

If there is a better way than using SED I am open to that, but stumped at the moment.

I appreciate any help.

Thanks

Last edited by radoulov; 10-11-2011 at 01:13 PM.. Reason: Code tags!
# 2  
Old 10-11-2011
If you are using a substitution in sed, try adding a 'g' (global) at the end:
Code:
sed 's/before/after/g' File

# 3  
Old 10-11-2011
I hope you are using GNU awk or sed. Other versions of those tools have a line limit==2048 characters.

Code:
awk '{gsub( "<GroupingKey>000000000816</GroupingKey>","
                  <GroupingKey>000000001816</GroupingKey>") ; print $0     }'  inputfile > outputfile

awk answer....
# 4  
Old 10-11-2011
Code:
# to debug
nawk -F '(<GroupingKey>|</GroupingKey>)' '{for(i=2;i<=NF; i+=2) {sub("[1-9][1-9]*$","1&", $i); print $i }}' myFile

Code:
nawk -F '(<GroupingKey>|</GroupingKey>)' '{for(i=2;i<=NF; i+=2) {sub("[1-9][1-9]*$","1&", $i);$i="<GroupingKey>"$i"</GroupingKey>"}}1' myFile


Last edited by vgersh99; 10-11-2011 at 01:34 PM..
# 5  
Old 10-11-2011
I have tried
sed 's/<GroupingKey>.*<\/GroupingKey>/<GroupingKey>......1...<\/GroupingKey>/g'

and

sed 's/<GroupingKey>............<\/GroupingKey>/<GroupingKey>......1...<\/GroupingKey>/g'

However the .... in the replace did not work as I was hoping it might. I end up getting
<Grouping id="024"><Source>ABC</Source><GroupingKey>......1...</GroupingKey></Grouping> and the rest of the file was file was gone outside of the Parent open and close tags.
# 6  
Old 10-11-2011
See if this works for you:
Code:
sed 's#\(...</GroupingKey>\)#1\1#g' File

These 2 Users Gave Thanks to Shell_Life For This Post:
# 7  
Old 10-11-2011
That's a bit better:
Code:
nawk -F '(<GroupingKey>|</GroupingKey>)' '{for(i=2;i<=NF; i+=2) {sub("[1-9][1-9]*$","1&", $i);$i="<GroupingKey>"$i"</GroupingKey>"}}1'  myFile

Improving on ShellLife's good idea:
Code:
sed 's#[^0][^0]*</GroupingKey>#1&#g' myFile

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

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

sed replace characters using a wildcard

Hello, I have some data that looks like the following, > <SALTDATA> (OVS0199262) HCl > <IDNUMBER> (OVS0199262) OVS0199262 > <SUPPLIER> (OVS0199262) TimTec > <EMAIL> (OVS0199262) info@timtec.net > <WEBSITE> (OVS0199262) http://www.timtec.net I need to remove the data in... (3 Replies)
Discussion started by: LMHmedchem
3 Replies

2. Shell Programming and Scripting

sed using wildcard

Hi Folks, I had a requirement to replace a pattern a.*a with 'a' alone. I'm writing a sed command to do that. But I'm not able to work this out. Pls help me. echo 'a123a456a789' | sed 's/a.*a/a/' Expected o/p : a456a789 But actual o/p is a789. :confused: how can write that... (6 Replies)
Discussion started by: poova
6 Replies

3. Shell Programming and Scripting

Sed Wildcard

Hello, I apologize for asking what is probably a simple question but I have been unable to understand the other posts on the topic. I have a file that has the following several lines: ABC DEF GH:IJKLMNOP_QRS_TUV_11112012_ABCL5 ABC DEF GH:IJKLMNOP_QRS_TUV_11112013_ABCL4 ABC DEF... (4 Replies)
Discussion started by: MolecularToast
4 Replies

4. UNIX for Dummies Questions & Answers

sed non-greedy pattern matching with wildcard

Toby> cat sample1 This is some arbitrary text before var1, This IS SOME DIFFERENT ARBITRARY TEXT before var2 Toby> sed -e 's/^This .* before //' -e 's/This .* before //' sample1 var2 I need to convert the above text in sample1 so that the output becomes var1, var2 by... (2 Replies)
Discussion started by: TobyNorris
2 Replies

5. Shell Programming and Scripting

wildcard in sed substitution

I have a number of strings that I want to remove: <b>Task: 100</b> <b>Task: 1100 </b> <b>Task: 2200 </b> But the numbers in them can vary from 4, 5 8, digits in length. But, no alpha chars. I tried this: sed '/Task:/,//d' $file > tmpfile ; mv tmpfile $file But it removed additional text on... (5 Replies)
Discussion started by: dba_frog
5 Replies

6. Shell Programming and Scripting

sed delete wildcard within a string

Hi I would like to batch delete the "note" entry from bib files. The start would be defined by "note ={" and the end by "}." (see example bib entry below). I tried the following command which does not have any effect: cat input.bib| sed -e 's/note = {.*}.//' > output.bib Any help would... (2 Replies)
Discussion started by: gerggeismann
2 Replies

7. Shell Programming and Scripting

sed to delete lines from a file by using wildcard

I have a text file with tons of data and I want to remove all lines which are have "240" regardless of ABC or BCD and shouldnt delete anything else ABC_10_00024045.zip blah blah ABC_10_00024045.zip.new ABC_10_00024046.zip blah blah ABC_10_00024046.zip.new ABC_10_00024446.zip blah blah... (3 Replies)
Discussion started by: gubbu
3 Replies

8. Shell Programming and Scripting

how to cut string with wildcard (sed)

i got text file and contain.... SKYPE Dec 11 09:26:05 IN=eth0 OUT=eth1 SRC=75.38.161.80 DST=192.168.1.56 PROTO=UDP SPT=30645 DPT=12630 LEN=66 SKYPE Dec 11 09:26:05 IN=eth1 OUT=eth0 SRC=192.168.1.56 DST=118.109.39.86 PROTO=UDP SPT=12630 DPT=15889 LEN=75 SKYPE Dec 11 09:26:05 IN=eth1 OUT=eth0... (2 Replies)
Discussion started by: slackman
2 Replies

9. Shell Programming and Scripting

sed help/wildcard substitution

I need to perform the following substitutions and have been struggling to determine if or how I can do this with sed or perl. I need to change the string foo(bar) to moo(bar,0) wherever this occurs in a file. Is there a way to do this? I'm thinking there might be a wildcard of some sort that... (4 Replies)
Discussion started by: Mike@NZ
4 Replies

10. Shell Programming and Scripting

Single character wildcard for SED

Could someone tell me the single character wildcard for SED? I have the file below: $ more input2 AAA /A/B/C BBB /D/E/F CCC /G/H/I DDD I want to remove all strings which contain forward slashs "/" to get the below: AAA BBB CCC I tried to do it in SED by the command below but I... (8 Replies)
Discussion started by: stevefox
8 Replies
Login or Register to Ask a Question