Replacing nth occurence


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Replacing nth occurence
# 1  
Old 10-29-2009
Replacing nth occurence

Hi

My input file is like this for eg:
Code:
abc abc abc abc abc abc

i would like to replace "abc" with "cba" where the occurrence is divisible by 2

of eg here 2nd, 4th and 6th occurence shud be replace

can anyone suggest in awk or sed

Last edited by zaxxon; 10-29-2009 at 10:35 AM.. Reason: use code tags please
# 2  
Old 10-29-2009
Code:
echo "abc abc abc abc abc abc"|sed -e "s/abc abc/abc cba/g"
abc cba abc cba abc cba


Last edited by Franklin52; 10-29-2009 at 10:45 AM.. Reason: Please use code tags!
# 3  
Old 10-29-2009
Given your sample data this should work:

Code:
  awk '{ for (i=1; i<=NF; i++)
           $i = i % 2 ? $i : "cba"
        }1'

Be aware that the above code will squeeze consecutive FS characters.

With Perl:

Code:
perl -pe's/(\w+)/$c++%2?cba:$1/ge'

Code:
% print abc abc abc abc abc abc |
  awk '{ for (i=1; i<=NF; i++)      
           $i = i % 2 ? $i : "cba"
        }1'
abc cba abc cba abc cba
% print abc abc abc abc abc abc |
  perl -pe's/(\w+)/$c++%2?cba:$1/ge'
abc cba abc cba abc cba



---------- Post updated at 02:45 PM ---------- Previous update was at 02:45 PM ----------

Quote:
Originally Posted by methyl
Code:
echo "abc abc abc abc abc abc"|sed -e "s/abc abc/abc cba/g"
abc cba abc cba abc cba

Nice Smilie
# 4  
Old 10-29-2009
Hi thax for the reply but im making an example since in my requirements its 25rd every occurence i need to replace in a line
# 5  
Old 10-29-2009
Another one Smilie:

Code:
echo 'abc abc abc abc abc abc'|
awk '{for(i=2;i<=NF;i+=2){$i="cba"}}1'

# 6  
Old 10-29-2009
Or:

Code:
awk '{ 
  for (i=2; i<=NF; i+=2) 
    $i = "cba"
        }1'

Edit: Just saw it was already posted.
# 7  
Old 10-29-2009
Thanks for the reply i need to match "abc" within other patterns also
like
abc bbb bbb abc bbb ccc abc
so need to match the pattern and occurence too
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Delete after nth occurence of string in each line

Hello, Environment: I am under Ubuntu 18.04 bionic. I have an sql file consisting of 10K lines. Objective: What I am trying to attain is to remove everything coming after 2nd tab in each line. While searching for the answer, I found two answers and both gave expected result just for the first... (2 Replies)
Discussion started by: baris35
2 Replies

2. Shell Programming and Scripting

Get nth occurence of string from a file

I have file in which the data looks like this, 01,0000000,xxxxxxx/ 02,xxxxxxxx,yyyyyy/ 03,test1,41203016,,/ 01,0000000,xxxxxxx/ 02,xxxxxxxx,yyyyyy/ ... (16 Replies)
Discussion started by: r@v!7*7@
16 Replies

3. UNIX for Dummies Questions & Answers

Extract until nth occurence

Hi, I couldn't figure how to extract until last occurence of a character. I have the string ./dir1/file1/abc.sh The output should be /dir1/file1 So, the command should display the path until last occurence of "/". Thanks. (3 Replies)
Discussion started by: rajivn786
3 Replies

4. Shell Programming and Scripting

Grab nth occurence in between two patterns using awk or sed

Hi , I have an issue where I want to parse through the output from a file and I want to grab the nth occurrence of text in between two patterns preferably using awk or sed ! TICKET NBR : 1 !GSI : 102 ! 3100.2.112.1 11/06/2013 15:56:29 ! 3100.2.22.3 98 ! 3100.2.134.2... (8 Replies)
Discussion started by: OTNA
8 Replies

5. Shell Programming and Scripting

[Solved] Find and replace till nth occurence of a special character

Hi, I have a requirement to search for a pattern in each line in a file and remove the in between words till the 3rd occurrence of double quote ("). Ex: CREATE TABLE "SCHEMANAME"."AMS_LTV_STATUS" (Note: "SCHEMANAME" may changes for different schemas. Its not a fixed value) I need to... (2 Replies)
Discussion started by: satyaatcgi
2 Replies

6. Shell Programming and Scripting

Delete until Nth occurence (sed, awk)

Hello people, Once more I need your help with SED/AWK I need to delete up to the Nth occurence of a char (from the beggining) and until the Mth occurence of a char (from the end) Example: Input: a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z Output: i,j Must delete up to the... (2 Replies)
Discussion started by: drbiloukos
2 Replies

7. UNIX for Dummies Questions & Answers

To find the Nth Occurence of Search String

Hi guys, I like to find the Line number of Nth Occurence of a Search string in a file. If possible, if it will land the cursor to that particualar line will be great. Cheers!! (3 Replies)
Discussion started by: mac4rfree
3 Replies

8. Shell Programming and Scripting

Replace matching nth occurence

Hi for eg my file has: val1 | val2 | val1 | val2 | val1 | val2 | val1 | val2 | here i need to replace '|' with '|\n' where the occurence of '|' is divisble by 2 so that the output comes like this val1 | val2 | val1 | val2 | val1 | val2 | val1 | val2 | Requesting suggestions in... (1 Reply)
Discussion started by: raghav288
1 Replies

9. Shell Programming and Scripting

delete line upto the nth occurence of a particular charachter.

hi all i want to delete a line upto a particular character. here is example. cp cms/images/wifi-zone.png i want to delete the line till . (cp cms/images/wifi-zone.) so the output wud be "png" only how can i do it? also please note down that dot (.) can also occur multiple... (12 Replies)
Discussion started by: kashifv
12 Replies

10. Shell Programming and Scripting

Sed and replacing one occurence of pattern

I would like to use sed to replace one occurence of a pattern in a file. When I use the s/// command it replaces all occurences of the pattern in the file. Should I be using something other than sed? Thanks (6 Replies)
Discussion started by: ss9u
6 Replies
Login or Register to Ask a Question