Date from filename inserted into records


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Date from filename inserted into records
# 8  
Old 06-18-2016
I'm not sure what you want:
  1. After the awk script creates one text file for each month, do you also want to create a file containing all of the monthly output in a separate yearly output file?
  2. Do you just want the awk script to produce yearly output files instead of monthly output files?
  3. Or, do you want the awk script to create yearly and monthly output files?
# 9  
Old 06-19-2016
A yearly output file in addition to the monthlies would be fantastic. I believe it is Option #3.

Thank you
# 10  
Old 06-19-2016
Try:
Code:
#!/bin/ksh
for file in [A-Z][A-Z][A-Z][0-9][0-9][0-9][0-9]0[01][0-9]
do	m=${file#????????}
	y=${file#???}
	y=${y%???}
	jd1=$(printf '%(%j)T' "$m/01/$y")
	printf '%s,%s\n' "$file" "$jd1"
done | awk -F ' *, *' '
FNR == NR {
	jdb[ARGV[ARGC++] = $1] = $2 - 1
	next
}
FNR == 1 {
	nofny = substr(FILENAME, 1, 7) ".txt"
	if(ofny && ofny != nofny)
		close(ofny)
	ofny = nofny
	if(ofnm)
		close(ofnm)
	ofnm = FILENAME ".txt"
	gsub(/,/, " ")
	print > ofnm
	print > ofny
	next
}
FNR == 2 {
	gsub(/,/, " ")
	print > ofnm
	print > ofny
	next
}
FNR == 3 {
	printf("Julian  %s  %s\n", $2, $9) > ofnm
	printf("Julian  %s  %s\n", $2, $9) > ofny
	fmt = sprintf("   %%03d  %%4.4s  %%%d.%ds\n", length($9), length($9))
	next
}
{	printf(fmt, $1 + jdb[FILENAME], $2, $9 ? $9 : "-") > ofnm
	printf(fmt, $1 + jdb[FILENAME], $2, $9 ? $9 : "-") > ofny
}' -

This User Gave Thanks to Don Cragun For This Post:
# 11  
Old 06-19-2016
Awesome!

Thanks again

---------- Post updated 06-19-16 at 09:50 AM ---------- Previous update was 06-18-16 at 11:37 PM ----------

An extra out-of-sequence record appears at the end of every monthly and in the yearly as well (305 in the example). Is there a way I can get rid of it?

Code:
   335  1851           8.3
   335  1951           8.3
   335  2051           8.3
   335  2151           8.9
   335  2251           9.4
   335  2351           9.4
   305                   -
Month:  12/2004
Station Name:  "CENTRAL PARK" Call Sign:  NYC
Julian  Time  Dry Bulb Cel
   336  0051           8.9
   336  0151           9.4
   336  0251          10.0
   336  0351           9.4

Thanks
# 12  
Old 06-19-2016
Could it be there's a trailing extra empty line in your input file(s)? Then $1, $2, and $9 are empty, and it prints jdb, nothing, "-"...
This User Gave Thanks to RudiC For This Post:
# 13  
Old 06-19-2016
...and there is..
# 14  
Old 06-19-2016
If you haven't already figured it out, to ignore empty lines in your input files, insert three more lines in the awk script I suggested:
Code:
NF == 0 {
	next
}

just before the line:
Code:
FNR == NR {

This User Gave Thanks to Don Cragun For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

How to change existing date to current date in a filename?

Suppose i have a list of files in a directory as mentioned below 1. Shankar_04152019_ny.txt 2. Gopi_shan_03122019_mi.txt 3. Siva_mourya_02242019_nd.txt .. . . . . 1000 . Jiva_surya_02282019_nd.txt query : At one shot i want to modify the above all filenames present in one path with... (4 Replies)
Discussion started by: Shankar455
4 Replies

2. Shell Programming and Scripting

Comparing two files to get only records to be inserted and updated

Hello all, Please help me for a script that compares two files and reads only those records that are to be inserted and updated. File1: c_id name place contact_no 1 abc xyz 34567 10 efg uvw 82725 6 hjk wth 01823 2 iuy ... (4 Replies)
Discussion started by: T@ni@
4 Replies

3. Shell Programming and Scripting

How to append date to filename, but base it on yesterday's date?

Hello, I'd like to write a monthly archive script that archives some logs. But I'd like to do it based on yesterday's date. In other words, I'd like to schedule the script to run on the 1st day of each month, but have the archive filename include the previous month instead. Here's what I... (5 Replies)
Discussion started by: nbsparks
5 Replies

4. UNIX for Advanced & Expert Users

query display number lines or records present in file only numeric value -without filename

Hi all Thanks in advance........... Please help me for this issue............ I have a file it has 11 records . I used the command like .... >$ wc -l file 11 file I'm getting output like 11 file (no.of records along with filename) here my requirement is, I want to display only... (3 Replies)
Discussion started by: ksrivani
3 Replies

5. Shell Programming and Scripting

Get the oldest date based on date in the filename

I am using ksh93 on Solaris. Ok, this may seem like a simple request at first. I have a directory that contains sets of files with a YYYYMMDD component to the name, along with other files of different filespecs. something like this: 20110501_1.dat 20110501_2.dat 20110501_3.dat... (2 Replies)
Discussion started by: gary_w
2 Replies

6. Shell Programming and Scripting

date from filename

Hi all I have the following question: With this command, I get the latest file in a directory. lastfile =`ls -1tr | tail -n 1` echo $lastfile The output is then: partner131210.txt (meaning 13th December 2010) My goal is to get the date into a variable and to obtain a final variable... (4 Replies)
Discussion started by: davis77
4 Replies

7. UNIX for Dummies Questions & Answers

Date in filename

how do i add the date for the filename? for example filename20080917 (3 Replies)
Discussion started by: khestoi
3 Replies

8. Shell Programming and Scripting

Get date from filename

Hi all, I have this files: aaa20080714.log bbbb20080714.log ccccccc20080714.log Can i get the 20080714 from each file? (6 Replies)
Discussion started by: icy_blu_blu
6 Replies

9. Shell Programming and Scripting

display filename with date

Hi buddies, I have a doubt. I want to display filename with date in the following format.Is there any way to do this. Kindly give me the solution. I want to display the result in the following manner. test1.txt 03/28/2008 testlog.log 02/20/2008 Please let me know one solution how to do... (1 Reply)
Discussion started by: pstanand
1 Replies

10. Shell Programming and Scripting

filename to contain date

hello, can anyone tell me how to rename a filename in a script to contain the current date? i have searched for the answer but with little success! many thanks rkap (4 Replies)
Discussion started by: rkap
4 Replies
Login or Register to Ask a Question