How to change a set of characters between delimiters?


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers How to change a set of characters between delimiters?
# 1  
Old 03-24-2015
How to change a set of characters between delimiters?

Hi all,
I am trying to write a script for renaming some files and I can't understand how to replace a set of characters between delimiters with sed.
The current filename is:
<ID1>_<ID2>_<DATE>_<ID3>.PDF
And I need to get the following:
<ID1>_<ID2>_<DATE>_X01<ID2>.PDF

I have tried the following:
Code:
echo $f |cut -d'_' -f2 | read ID2
mv $f $(echo $f | sed 's/_2015*.PDF\./\X01$ID2.PDF/')

but it doesn't work. Could you please help me?
Thanks in advance.
# 2  
Old 03-24-2015
ID2 will be set in the wrong subshell and single quotes will prevent variable substitution. The following should work:

Code:
echo $f |cut -d'_' -f2 | ( read ID2; mv $f $(echo $f | sed "s/\(_2015.*\)_.*.PDF/\1_X01$ID2.PDF/") )

# 3  
Old 03-24-2015
Hi Walter,

Thank you very much for your quick reply.
I have tried with your code but I got the following:
<ID1>_<ID2>X01<ID2>.PDF

and I would need:
<ID1>_<ID2>_<DATE>_X01<ID2>.PDF

For example, the following file:
ABCD_1234_20150324_A02415453.PDF

should be renamed as:
ABCD_1234_20150324_X011234.PDF

When I execute your code I get this:
ABCD_1234X011234.PDF

Thanks again.
Regards,
# 4  
Old 03-24-2015
Hm, works for me:

Code:
$ f="ABCD_1234_20150324_A02415453.PDF"
$ echo $f|cut -d'_' -f2 | ( read ID2; echo mv $f $(echo $f | sed "s/\(_2015.*\)_.*.PDF/\1_X01$ID2.PDF/") )
mv ABCD_1234_20150324_A02415453.PDF ABCD_1234_20150324_X011234.PDF

# 5  
Old 03-25-2015
Hi Walter.
Sorry, I haven't copied your command properly. It works great.
Thanks a lot.
Regards.
# 6  
Old 03-25-2015
A solution with shell built-ins:
Code:
f="ABCD_1234_20150324_A02415453.PDF"
echo "$f" | ( IFS="_" read p1 p2 p3 p4; echo mv "$f" "${p1}_${p2}_${p3}_X01${p2}.PDF" )

 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Red Hat

PROC_MEM_RES how to set/unset/change

Hi all, Does anyone know how to change PROC_MEM_RES? We have a DB server with quite a few oracle instances (RAC) and we are getting critical alerts for PROC_MEM_RES. Anyone know how to increase the current setting or what we should do about it? Thanks in advance. john (2 Replies)
Discussion started by: jonnyd
2 Replies

2. Shell Programming and Scripting

How to put delimiters in text files after fix characters?

Hi , i have a text file in which i want to put delimiters after certain characters ( fix),. like put a delimiter (any like ,) after 1-3 character than 4 than 5 than 6-17 ..... files looks like this (original)... (8 Replies)
Discussion started by: anamdev
8 Replies

3. Shell Programming and Scripting

search for a set of characters and move

I want to search/grep for a set of characters in a file(all occurences) and move them to another file. Any command line? regards, Sri (2 Replies)
Discussion started by: Sriranga
2 Replies

4. Solaris

help me to change the character set

dears i am using solaris 10 i am facing a problem when i make setup for solaris i choose the country egypt and i select the language north america but i forget to do that the i found the date Jun written in arabic i want to change character set to written in english -rw-r--r-- 1 root ... (4 Replies)
Discussion started by: hosney00ux
4 Replies

5. UNIX for Dummies Questions & Answers

Change permission for a set of files

Hi there, I want to change from this permission -r-xr-xr-x to -r-xr-xr-- for a set of files under unix. Can someone help me to go-about doing this in one shot. Cheers, RN (2 Replies)
Discussion started by: karthickrn
2 Replies

6. UNIX for Dummies Questions & Answers

Why does set also change setenv variables?

I thought that set and setenv was easy enough to understand until I started experimenting. I noticed the same problem in a previous thread, so I will use it as an example. set command gave the following output: argv () cwd /homes/e/ee325328/assignment.2 home /homes/e/ee325328 path ( a... (2 Replies)
Discussion started by: benwj
2 Replies

7. Shell Programming and Scripting

How to change only the x first characters of a string?

Hi, How can I replace x first characters from a string? I have a file with... say 10000 entries as follows: 00123456781 00123456782 00123456783 ... What I want to do is change the leading "00" with for example "12" The leading 00 can be in some files some other 1 or more digits e.g.... (2 Replies)
Discussion started by: Juha
2 Replies

8. Shell Programming and Scripting

Need to change a set of lines between two given Pattrens

Hi All I have a Small Requiement I wanted to replace all the Follwing lines as follows Input:: file1 EVALUATE WS-TEMP-ATTR(15:1) WHEN 'D' MOVE DFHDARK TO WS-ATTR-COLOR WHEN OTHER MOVE DFHDFT ... (9 Replies)
Discussion started by: pbsrinivas
9 Replies

9. Shell Programming and Scripting

Replacing set of characters with a value of a variable

I need to replace anything immediately after the pattern "standard01/" in a file with the value of a variable I don't know the length of the characters stored in that variable. - that might vary. I know there is some string after the pattern "standard01/", i don't know the what the string is or... (1 Reply)
Discussion started by: prekida
1 Replies

10. Shell Programming and Scripting

how to set a variable to accept alpha-numeric characters?

I am working on a shell program that needs to accept alpha-numeric input (i.e., P00375); when I use a simple 'read' statement to read in the input (i.e., read LOG), I receive the message "p00375: bad number". How must I adjust my input statement to accept alpha-numerics? Thanks! Brent (3 Replies)
Discussion started by: bcaunt
3 Replies
Login or Register to Ask a Question