How to change a segment in a particular position


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to change a segment in a particular position
# 8  
Old 07-21-2009
Code:
my $str='XYZ*004567472*0099*020091231*0123*0.12';
$str=~s/(?<=[*])0+(?=(?:[^0*]*$)|(?:[^0*]*[*][^*]*$))//g;
print $str;

# 9  
Old 07-21-2009
Code:
xx='XYZ*04567472*0099*020091231*0123*0.12'

This works:
Code:
echo $xx | sed 's/\*00*/\*/5; s/\*00*/\*/4;'

But this does not:
Code:
echo $xx | sed 's/\*00*/\*/4; s/\*00*/\*/5;'

I have switched the 4 and 5.

---------- Post updated at 12:07 PM ---------- Previous update was at 10:32 AM ----------

Quote:
Originally Posted by cjcox
Code:
sed 's/^\([^*][^*]*[*][^*][^*]*[*][^*][^*]*[*][^*][^*]*\)[*]00*\([^*][^*]*\)[*]00*\(\..*\)/\1*\2*\3/'

I think that should work with most any sed variant.
Very nice. But, can be shortened to this:
Code:
echo $xx | sed 's~^\([^*]*\*[^*]*\*[^*]*\*[^*]*\*\)0*\([^*]*\*\)0*~\1\2~'

# 10  
Old 07-21-2009
Thanks everyone. Really amazing, how many different ways there are to solve the same issue.
# 11  
Old 07-21-2009
I'm sure there's a hundred more.

Do yourself a favour... pick a solution you understand and, if you're new to scripting don't go for the "one-liner", which people seem to love asking for.. because you a) probably won't understand it; and b) will certainly never remember it!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Search words in any quote position and then change the words

hi, i need to replace all words in any quote position and then need to change the words inside the file thousand of raw. textfile data : "Ninguno","Confirma","JuicioABC" "JuicioCOMP","Recurso","JuicioABC" "JuicioDELL","Nulidad","Nosino" "Solidade","JuicioEUR","Segundo" need... (1 Reply)
Discussion started by: benjietambling
1 Replies

2. UNIX for Beginners Questions & Answers

Delete columns with a specific title XXX, where the position change in each file

Goodmorning, I know how to cut a string and a column, and how to find a word. I have a file with over 100 columns. All columns have a title in the first line. I have to delete all columns with the XXX title. I can't use cut -f because the position of XXX columns change in each file, and in... (14 Replies)
Discussion started by: echo manolis
14 Replies

3. Shell Programming and Scripting

Search for a string at a particular position and replace with blank based on position

Hi, I have a file with multiple lines(fixed width dat file). I want to search for '02' in the positions 45-46 and if available, in that lines, I need to replace value in position 359 with blank. As I am new to unix, I am not able to figure out how to do this. Can you please help me to achieve... (9 Replies)
Discussion started by: Pradhikshan
9 Replies

4. Shell Programming and Scripting

Need command or script to print all lines from 2nd position to last but one position

hi guys, i want command or script to display the content of file from 2nd position to last but one position of a file abcdefghdasdasdsd 123,345,678,345,323 434,656,656,656,656 678,878,878,989,545 4565656667,65656 i want to display the same above file without first and... (2 Replies)
Discussion started by: hemanthsaikumar
2 Replies

5. Shell Programming and Scripting

Change text at a variable position

Hi there script guru's I have an input file /tmp/in.txt of which the data is seperated by a : (example of the data) test1:zz:2000:2000:zzz te:a:2000:3333:bbb testabs:x:2004:3000:cccc I would like to run a scrip (bash) changing the data after the second ":" example Test for the value of... (3 Replies)
Discussion started by: KobusE
3 Replies

6. UNIX for Dummies Questions & Answers

Change a character based on its position number

Hi I have a text file that I want to change some of the characters based on their position. My file contain multiple lines and characters should be counted continuously line by line. For example, I want to convert the 150th T to C. What can I do? Here is a portion of my file:... (10 Replies)
Discussion started by: a_bahreini
10 Replies

7. Shell Programming and Scripting

position change

Hi All, input file: echo "a|b|c|d|test|123|same" | awk 'BEGIN {FS=OFS="|"} {print $1,$2,$7,$4,$5,$6}' Got Output : a|b|same|d|test|123 This is the sample input file with less fields. But my original file contains more field values. How to replace last value to 3rd postion value. Because... (8 Replies)
Discussion started by: Jairaj
8 Replies

8. Programming

Data segment or Text segment

Hi, Whether the following piece of code is placed in the read-only memory of code (text) segment or data segment? char *a = "Hello"; I am getting two different answers while searching in google :( that's why the confusion is (7 Replies)
Discussion started by: royalibrahim
7 Replies

9. Shell Programming and Scripting

Change many columns position/order

Hi everyone, Please some help over here. (I´m using cygwing) I have files with 40 columns and 2000 lines in average. I´m trying to change the order position as follow. Original columns position:... (3 Replies)
Discussion started by: cgkmal
3 Replies

10. Shell Programming and Scripting

Change Position of word character

Hi, I have following format in file aaa with content below, and would like to seek help from forumer about how to change and swap the position on 2nd field. 5874957|901125| 95874960|650614| 95874966|870308| 901125 to be changed as 25-11-1990 for eg Can someone help please ?? :) ... (6 Replies)
Discussion started by: cedrichiu
6 Replies
Login or Register to Ask a Question