Date from filename inserted into records


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Date from filename inserted into records
# 15  
Old 06-20-2016
Honestly, I didn't but I found a perl one-liner to recursively delete the unnecessary lines before running the script you suggested
Code:
perl -i -pe "chomp if eof” */*

Now I am trying to substitute - with -9, decimals in form .x into 0.x and negative decimals such as -.x into -0.x
For example:
Code:
 
   020  1751           1.7
   020  1851           1.7
   020  1951           1.1
   020  2051            .6
   020  2151             -
   020  2251             -
   020  2351             -
   021  0051           -.6
   021  0151          -1.1

should end up like this
Code:
 
   020  1751           1.7
   020  1851           1.7
   020  1951           1.1
   020  2051           0.6
   020  2151          -9.0
   020  2251          -9.0
   020  2351          -9.0
   021  0051          -0.6
   021  0151          -1.1

Any suggestions would be greatly appreciated.

Thanks
# 16  
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:
# 17  
Old 06-20-2016
You are very right. Perfectly understood I will do that in the future. Not that it makes any difference but I didn't even know that something like that was possible. Unix for DUMMIES, remember? I will do my best though. Thanks for the input and the comments.

Last edited by spirospap; 06-20-2016 at 09:48 PM..
# 18  
Old 06-21-2016
I am perfectly aware that this is the "UNIX for Dummies Questions & Answers" forum. (It is not the "UNIX for Dummies Get Free Code Here" forum.) We are here to help you learn how to use UNIX and UNIX-like system tools, not to use those tools to do your job for you. We expect that when we make suggestions that help you do something you didn't know how to do before, that you will look at that code and learn from it. If you have trouble figuring out how code that was suggested works, read the manual page for that utility and see if you can figure it out. If you can't, ask questions and we'll be happy to explain how it works (i.e., give answers). Or, someone else might even suggest alternative code that might work better and explain why.

We are here to help you learn. Take advantage of the decades of experience provided free to you by the volunteers who are here to answer your questions.
This User Gave Thanks to Don Cragun For This Post:
# 19  
Old 06-21-2016
Noted and agreed. It may not be apparent but I am working very hard on this. And your experience and guidance is not taken for granted or unappreciated. I will keep all suggestions in mind.

Thanks
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