Awk command to split file name


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Awk command to split file name
# 1  
Old 11-02-2010
Awk command to split file name

Hi
I have few files with format access.2Nov-12:15AM.
These files will be generated daily . I need to write a script so that if today's date is less than 10 then it has to zip the file and rename it to

acess.02Nov-12:15AM.gz .please help me in this . Also please help me
in splitting the file acess.2Nov-12:15AM to
1 acess
2 2
3 Nov
4 12:15
5 AM
Thanks for the help in advance
# 2  
Old 11-02-2010
Code:
find ./ -name "access.*" -mtime +10 -exec gzip {} \;

or
Code:
ls -t access.* | tail +11 | xargs gzip

You should find the script that generate those files instead of try to parse them : $(date '+%Y%m%d') would be a better date format choice for naming such daily files


Code:
# fname=access.2Nov-12:15AM
# for i in $(echo "$fname" | sed 's/\(access\).\([0-9][0-9]*\)\([JFMASOND][a-z][a-z]\)-\([0-9][0-9]*\):\([0-9][0-9]*\)\([AP]M\)$/\1 \2 \3 \4 \5 \6/')
> do
> let j++
> fname[$j]=$i
> done
# echo ${fname[1]}
access
# echo ${fname[2]}
2
# echo ${fname[3]}
Nov
# echo ${fname[4]}
12
# echo ${fname[5]}
15
# echo ${fname[6]}
AM
#

in ksh :
Code:
# fname="access.2Nov-12:15AM"
# echo "$fname" | sed 's/\(access\).\([0-9][0-9]*\)\([JFMASOND][a-z][a-z]\)-\([0-9][0-9]*\):\([0-9][0-9]*\)\([AP]M\)$/\1 \2 \3 \4 \5 \6/' | read a b c d e f
# echo "nam=$a day=$b mon=$c hr=$d min=$e last=$f"
nam=access day=2 mon=Nov hr=12 min=15 last=AM
#


Last edited by ctsgnb; 11-02-2010 at 06:55 PM..
# 3  
Old 11-03-2010
when i tried the command
echo "$fname" | sed 's/\(access\).\([0-9][0-9]*\)\([JFMASOND][a-z][a-z]\)-\([0-9][0-9]*\):\([0-9][0-9]*\)\([AP]M\)$/\1 \2 \3 \4 \5 \6/' | read a b c d e f

i got all blank values as output in a,b,c,d,e,f

---------- Post updated at 11:12 PM ---------- Previous update was at 11:08 PM ----------

I thnk the read command is not working is there any way i can pass the output to diff variables?
# 4  
Old 11-03-2010
try this,

Code:
fname='access.2Nov-12:15AM'
echo "$fname" | sed 's/\(access\).\([0-9][0-9]*\)\([JFMASOND][a-z][a-z]\)-\([0-9][0-9]*\):\([0-9][0-9]*\)\([AP]M\)$/\1\n\2\n\3\n\4\n\5\n\6/' | while read fields; do echo $fields; done

# 5  
Old 11-03-2010
This may also help i believe
Code:
var="access.2Nov-12:15AM"
echo ${var%.*}
access
var1=`echo ${var%-*}`
echo ${var1#*.} | sed 's/\([0-9]*\).*/\1/'
2
echo ${var1#*.} | cut -c2-4
Nov
echo ${var#*-} | cut -c1-5
12:15
echo ${var#*-} | cut -c6-7
AM


Last edited by Franklin52; 11-03-2010 at 08:46 AM.. Reason: Please use code tags
# 6  
Old 11-04-2010
Hi
that worked thanks . If my file is /clocal/www/logs/IHS/webs5486/access.29Oct-12:15AM.gz

how can i get the path /clocal/www/logs/IHS/webs5486/? from the above line?
# 7  
Old 11-04-2010
dirname - this command gives you the directories name alone..try..
Code:
dirname /clocal/www/logs/IHS/webs5486/access.29Oct-12:15AM.gz

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

awk command to split pipe delimited file

Hello, I need to split a pipe de-limited file based on the COLUMN 7 value . If the column value changes I need to split the file Source File Payment|ID|DATE|TIME|CONTROLNUMBER|NUMBER|NAME|INDICATOR 42156974|1137937|10/1/2018|104440|4232|2054391|CARE|1... (9 Replies)
Discussion started by: rosebud123
9 Replies

2. Shell Programming and Scripting

awk split and awk calculation in the same command

I am trying to run the awk below. My question is when I split the input, then run anotherawk to perform a calculation using that splitas the input there are no issues. When I try to combine them the output is not correct, is the split not working or did I do it wrong? Thank you :). input ... (8 Replies)
Discussion started by: cmccabe
8 Replies

3. Shell Programming and Scripting

awk split command to get the desired result

Dear all, I am using the awk 'split' command to get the particular value. FILE=InputFile_009_0.txt Temp=$(echo $FILE | awk '{split($FILE, a, "e_"); print a}') I would like to have the Temp take the value as : _009_0 ... (4 Replies)
Discussion started by: emily
4 Replies

4. Shell Programming and Scripting

awk file split

Hi all, First of all I' like to mention that I'm pretty new to unix scripting. :( I'm trying to split an large xml with awk and rename it based on the values of two attributes. Example XML <RECORD> <element1>11</element1> <element2>22</element2> <element3>33</element3>... (18 Replies)
Discussion started by: f0usk4s
18 Replies

5. Shell Programming and Scripting

Want to split awk command

Hi, There is an awk command in script and it is running successfully. I want to split that command in 2 lines. I have tried using '\' but its not working.. Please suggest me the solution. (11 Replies)
Discussion started by: Sanket Dalvi
11 Replies

6. Shell Programming and Scripting

Split a file using awk command.

awk 'FNR == 1 { c = 1 } { print > (f c) } !FNR%n { close(f c); ++c }' n=$files_per_stream f=$input_path/filename_ $input_file $input_file with some records are splitted into files named filename_1,filename_2...etc according to $files_per_stream. Plz help me know how and if anyone has... (7 Replies)
Discussion started by: guptam
7 Replies

7. Shell Programming and Scripting

using awk in perl with split command

Hi, I have an array with following data. First field shows the owner and second is unique name. Now i have to pic the latest value with respect to the date in case of duplicate. like "def" is from two owners "rahul/vineet", now i want the latest from the two and the owner name also for all the... (9 Replies)
Discussion started by: vineet.dhingra
9 Replies

8. Shell Programming and Scripting

Split File by Pattern with File Names in Source File... Awk?

Hi all, I'm pretty new to Shell scripting and I need some help to split a source text file into multiple files. The source has a row with pattern where the file needs to be split, and the pattern row also contains the file name of the destination for that specific piece. Here is an example: ... (2 Replies)
Discussion started by: cul8er
2 Replies

9. UNIX for Dummies Questions & Answers

Split a file with no pattern -- Split, Csplit, Awk

I have gone through all the threads in the forum and tested out different things. I am trying to split a 3GB file into multiple files. Some files are even larger than this. For example: split -l 3000000 filename.txt This is very slow and it splits the file with 3 million records in each... (10 Replies)
Discussion started by: madhunk
10 Replies

10. Shell Programming and Scripting

awk command to split in to 2 files

Hi, I have a problem in grepping a file for 2 strings and writing them to 2 appropriate files. I need to use the awk command and read the file only once and write to the appropriate file. My file is very huge in size and it is taking a long time using cat command and grep command. Can anyone... (3 Replies)
Discussion started by: m_subra_mani
3 Replies
Login or Register to Ask a Question