Sponsored Content
Top Forums UNIX for Beginners Questions & Answers Date from filename inserted into records Post 302975888 by Don Cragun on Monday 20th of June 2016 08:00:19 PM
Old 06-20-2016
Instead of searching the web for explicit ways to perform very particular formatting requests, try reading the awk man page on your system and see if you can figure out how to modify the scripts you have been given to meet each of your new requirements. We are happy to help you learn how to use awk if there is something you can't figure out; but we are here to act as your unpaid programming staff for countless minor changes...

I will give you these two new additional trivial changes this time. Next time, we will expect you to show us what changes you want to your output and show us how you have tried to modify this awk script to meet your new requirements.

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
}
NF == 0 {
	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.1f\n", length($9))
	next
}
{	printf(fmt, $1 + jdb[FILENAME], $2, $9 ? $9 : -9) > ofnm
	printf(fmt, $1 + jdb[FILENAME], $2, $9 ? $9 : -9) > ofny
}' -

Note that the format string for printing field 9 has changed from %x.xs where x is the width of the header for field 9 (which displayed the contents of field 9 as a right justified string) to %x.1f (which displays the contents of field 9 as an x character floating point value with 1 digit displayed after the decimal point). And, changing $9 ? $9 : "-" in the printf statement printing field 9 (which printed the contents of field 9 if the contents is not the empty string and is not zero, or printed the string "-" if the contents of field 9 is zero or is an empty string) to ($9 != "") ? $9 : -9 causes the contents of field 9 to be printed if it is not an empty string, or to print -9 if the contents of field 9 is an empty string.
This User Gave Thanks to Don Cragun For This Post:
 

10 More Discussions You Might Find Interesting

1. 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

2. 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

3. 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

4. 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

5. 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

6. 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

7. 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

8. 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

9. 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

10. 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
All times are GMT -4. The time now is 07:00 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy