Use portion of file name as new file name


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Use portion of file name as new file name
# 15  
Old 12-20-2016
PLEASE copy AS IS - do not interfere without knowing EXACTLY WHAT you are doing. DON'T concatenate the statements from multiple lines into one line without additional measures (e.g. adding a semicolon).
# 16  
Old 12-20-2016
Quote:
Originally Posted by RudiC
PLEASE copy AS IS - do not interfere without knowing EXACTLY WHAT you are doing. DON'T concatenate the statements from multiple lines into one line without additional measures (e.g. adding a semicolon).
Apologies, RudiC. There's no intention of argument on my part nor to give offense. However, your comment is a disservice to the people coming here.

It is OK to change things even if you do not know what you are doing, it is OK to experiment and come back asking why it is not working. Please, try things and if it is broken ask why it is broken. Do not accept the suggestions as written in stone rules. They are not! Convince yourself that that's what you want and learn from it.

However, when you ask for help, please, give motivation to the person helping you by explaining what you did, tried or it is not working and do not just say it doesn't work (or the effect of it). Give some incentive to the people helping you to continue to do so.
# 17  
Old 12-20-2016
RudiC, I guess I am having problems following directions. If I use the code as is I get this results:
Code:
Raul@Raul-PC ~
$ {TMP = FILENAME
-bash: {TMP: command not found

Raul@Raul-PC ~
$          sub (/\.*$/, "", TMP)
-bash: syntax error near unexpected token `/\.*$/,'

Raul@Raul-PC ~
$          print "a_" TMP "_ACTUAL_"months[substr($3,0,3)]"20" substr($3,5,2)"_RR.txt"
-bash: syntax error near unexpected token `('

Raul@Raul-PC ~
$         }'

If I add it to the existing code, replacing what I have the new code looks like this:
Code:
awk -F, 'BEGIN {months ["JAN"]="AP01"; months ["FEB"]="AP02"; months ["MAR"]="AP03"; 
months ["APR"]="AP04"; months ["MAY"]="AP05"; months ["JUN"]="AP06"; 
months ["JUL"]="AP07"; months ["AUG"]="AP08"; months ["SEP"]="AP09"; 
months ["OCT"]="AP10"; months ["NOV"]="AP11"; months ["DEC"]="AP12";}
{TMP = FILENAME
         sub (/\.*$/, "", TMP)
         print "a_" TMP "_ACTUAL_"months[substr($3,0,3)]"20" substr($3,5,2)"_RR.txt"
        }'

The result looks like this:
Code:
Raul@Raul-PC ~
$ Raul@Raul-PC ~
> months ["JUL"]="AP07"; months ["AUG"]="AP08"; months ["SEP"]="AP09";
> months ["OCT"]="AP10"; months ["NOV"]="AP11"; months ["DEC"]="AP12";}
> {TMP = FILENAME
>          sub (/\.*$/, "", TMP)
>          print "a_" TMP "_ACTUAL_"months[substr($3,0,3)]"20" substr($3,5,2)"_RR.txt"
>         }'-bash: Raul@Raul-PC: command not found

Raul@Raul-PC ~
$ $ awk -F, 'BEGIN {months ["JAN"]="AP01"; months ["FEB"]="AP02"; months ["MAR"]="AP03";
> > months ["APR"]="AP04"; months ["MAY"]="AP05"; months ["JUN"]="AP06";
> > months ["JUL"]="AP07"; months ["AUG"]="AP08"; months ["SEP"]="AP09";
> > months ["OCT"]="AP10"; months ["NOV"]="AP11"; months ["DEC"]="AP12";}
> > {TMP = FILENAME
> >          sub (/\.*$/, "", TMP)
> >          print "a_" TMP "_ACTUAL_"months[substr($3,0,3)]"20" substr($3,5,2)"_RR.txt"
> >         }'

So I am stuckSmilie because as you said I don't know what I am doing, that I why attempted to correct by removing and adding instructions such as the
Code:
*.txt

at the end of the instructions and changing the position of the curly brackets. I do appreciate your efforts. I am just lost
# 18  
Old 12-20-2016
To run an awk script from the shell (bash?) command line, you need to enter a command like awk extvars '...script...' inputstream (other syntaxes are possible).
What I see in your post above is quite mysterious to me:

- -bash: {TMP: command not found looks like the leading awk is missing
- -bash: Raul@Raul-PC: command not found looks like you copied the shell prompt for the command

To make it (hopefully) unambiguously clear: please run
Code:
awk -F, '
BEGIN   {months ["JAN"]="AP01"; months ["FEB"]="AP02"; months ["MAR"]="AP03";
         months ["APR"]="AP04"; months ["MAY"]="AP05"; months ["JUN"]="AP06";
         months ["JUL"]="AP07"; months ["AUG"]="AP08"; months ["SEP"]="AP09";
         months ["OCT"]="AP10"; months ["NOV"]="AP11"; months ["DEC"]="AP12";
        }
        {TMP = FILENAME
         sub (/\.*$/, "", TMP)
         print "a_" TMP "_ACTUAL_"months[substr($3,0,3)]"20" substr($3,5,2)"_RR.txt"
        }
' *.txt

from the command line and report the results.
# 19  
Old 12-20-2016
RudiC
I have copied exactly what you had on your last reply, here are the results.
Code:
Raul@Raul-PC ~
$ awk -F, '
> BEGIN   {months ["JAN"]="AP01"; months ["FEB"]="AP02"; months ["MAR"]="AP03";
>          months ["APR"]="AP04"; months ["MAY"]="AP05"; months ["JUN"]="AP06";
>          months ["JUL"]="AP07"; months ["AUG"]="AP08"; months ["SEP"]="AP09";
>          months ["OCT"]="AP10"; months ["NOV"]="AP11"; months ["DEC"]="AP12";
>         }
>         {TMP = FILENAME
>          sub (/\.*$/, "", TMP)
>          print "a_" TMP "_ACTUAL_"months[substr($3,0,3)]"20" substr($3,5,2)"_R                                                                                                               R.txt"
>         }
> ' *.txt
a_STAVOSHFM.txt_ACTUAL_AP062015_RR.txt
a_STAVOSHFM.txt_ACTUAL_AP022016_RR.txt
a_STAVOSHFM.txt_ACTUAL_AP032015_RR.txt
a_STAVOSHFM.txt_ACTUAL_AP052016_RR.txt
a_STHCPSHFM.txt_ACTUAL_AP062015_RR.txt
a_STHCPSHFM.txt_ACTUAL_AP022016_RR.txt
a_STHCPSHFM.txt_ACTUAL_AP032015_RR.txt
a_STHCPSHFM.txt_ACTUAL_AP052016_RR.txt

Raul@Raul-PC ~
$

See depiction for ease
Imageor https://1drv.ms/i/s!AqQovh6lB7bfg0qta9AuWIU87Ajg
# 20  
Old 12-20-2016
Hmmm, negligence from my side. Still, we're getting there! In the sub statement, replace /\.*$/ with /\..*$/ and try again. You should have a list of valid file names now. If happy, replace print "a..." with print > "a..." to create all the new files you needed.
This User Gave Thanks to RudiC For This Post:
# 21  
Old 12-20-2016
Well that did it Smilie
The extra dot and after replacing the print with the print > the files were built as expected.
You have no idea how grateful I am. Thanks for your efforts and your patience. I will mark the thread as resolved
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

How to append portion of a file content to another file when a certain pattern is matching?

Hi ladies and gentleman.. I have two text file with me. I need to replace one of the file content to another file if one both files have a matching pattern. Example: text1.txt: ABCD 1234567,HELLO_WORLDA,HELLO_WORLDB DCBA 3456789,HELLO_WORLDE,HELLO_WORLDF text2.txt: XXXX,ABCD... (25 Replies)
Discussion started by: bananamen
25 Replies

2. Shell Programming and Scripting

Unix Scripting : Sort a Portion of a File and not the complete file

Need to sort a portion of a file in a Alphabetical Order. Example : The user adam is not sorted and the user should get sorted. I don't want the complete file to get sorted. Currently All_users.txt contains the following lines. ############## # ARS USERS ############## mike, Mike... (6 Replies)
Discussion started by: evrurs
6 Replies

3. UNIX for Advanced & Expert Users

Removing portion of file name

Hi , I am getting file name like ABC_DATA_CUSTIOMERS_20120617.dat ABC_DATA_PRODUCTS_20120617.dat Need to convert CUSTIOMERS.dat PRODUCTS.dat Help me how to do this. (7 Replies)
Discussion started by: reach_malu
7 Replies

4. Shell Programming and Scripting

Rename portion of file based on another file

Hello, I've been searching and reading, but I can't figure out how to solve this problem with my newbie skills. In my directory, I have a list of files (see dirlist.txt attachment) that I need to merge and rename. I have part of the code of the code figured out (see below). However, I... (3 Replies)
Discussion started by: anjulka
3 Replies

5. UNIX for Dummies Questions & Answers

Portion of a file in a new files

Hi, I need to devide one file into 3 files based on column numbers and put a string (FILE1, FILE2, FILE3) in the last..... Input file: Column1,Column2,Column3,Column4,Column5,Column6,Column7,Column8,Column9,Column10 Output1: Column1,Column3,Column6,Column4,Column5,FILE1 Output2:... (6 Replies)
Discussion started by: yale_work
6 Replies

6. Shell Programming and Scripting

Grep certain portion from the file

Dear Friends, Here I am with another difficulty. I have a flat file from which I wanna grep following pattern. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Statement Date : Blah blah Blah blah Blah blah Blah blah... (1 Reply)
Discussion started by: anushree.a
1 Replies

7. UNIX for Dummies Questions & Answers

Print a portion of file

Hi, I have a little problem. I am having a file with pattern like : asdf;ffgg;dfjfj;djdfjf;nnjj;djd;ssj; I just want to print the portion from last ";" upto the immediate previous ";". There are several ";" in my line. Please help me out... Thnx in advance (8 Replies)
Discussion started by: vanand420
8 Replies

8. Programming

Delete Portion of a file

hi i would like to know whether i can delete a part of a file in C for eg. if my file contained 1234567890 and i want to delete 456 so that it becomes 1237890 is there a way i can do this. well, one way i can achieve this is by creating a new file, copy whatever i want, then delete the... (2 Replies)
Discussion started by: sameersbn
2 Replies

9. Shell Programming and Scripting

Separate a portion of text file into another file

Hi, I have my input as follows : I have given two entries- From system Mon Aug 1 23:52:47 2005 Source !100000006!: Impact !100000005!: High Status ! 7!: New Last Name+!100000001!: First Name+ !100000003!: ... (4 Replies)
Discussion started by: srikanth_ksv
4 Replies

10. Shell Programming and Scripting

remove portion of file

Can anyone tell me how to remove a portion of a large file to smaller ones? What I have is a large file that was created becasue several similar files were joined together. Each individual file starts with MSG_HEAD. I want to take everything from MSG_HEAD up to were it says MSG_HEAD again and... (13 Replies)
Discussion started by: methos
13 Replies
Login or Register to Ask a Question