Bash Scripting with date format conversion


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Bash Scripting with date format conversion
# 1  
Old 05-26-2016
Bash Scripting with date format conversion

I have a script below and wanted to change the output into three different file format (3 separate script)

Code:
#!bin/bash
#input file format postwrf_d01_20131206_0600_f08400.grb2
#postwrf_d01_YYYYMMDD_ZZZZ_f0HHHH.grb2
#zzzz= 0000,0600,1200,1800 (in UTC)
#HHHH=00000,00600,01200,01800 ..ect (in hours)

for i in postwrf_d01_*_??00_f?????.grb2; do ./wgrib2 $i -match ':((U|V)GRD:10 m above ground|PRMSL|(ABSV|HGT):(850|700) mb)|((UGRD|VGRD) 850|700|500) mb):' -grib `basename -s .gr2 $i`_subset.grb2; done

I wanted to change the current output file format to

1. d01_YYYYMMDD_ZZZZ_f0HHHH.grb2
2. YYYYMMDD_ZZZZ_f0HHHH.gr2
3. nwp.TC23.YYYYMMDDZZ.f0MMMM
# for 3, hours is converted to minutes such that 0HHHH became 0MMMM
Y = year
M= month
D = Day
Z= initialization (0000,0600,1200,1800)
M= minutes (i.e 00000,00360, 00720 etc...)

Last edited by Scott; 05-27-2016 at 03:36 AM.. Reason: Please use code tags
# 2  
Old 05-27-2016
So you you want to make a filename conversion like this:

Code:
INPUT    : postwrf_d01_YYYYMMDD_ZZZZ_f0HHHH.grb2
OUTPUT 1 :         d01_YYYYMMDD_ZZZZ_f0HHHH.grb2
OUTPUT 2 :             YYYYMMDD_ZZZZ_f0HHHH.gr2 
OUTPUT 3 :    nwp.TC23.YYYYMMDDZZ.f0MMMM

I suggest you capture the wanted subgroups e. g. with sed and then reassemble the string for the different needs.

Code:
#!/bin/bash
FILENAME="postwrf_d01_20160527_0600_f01000.grb2"
set $( echo "$filename"  \
   | sed -r -e 's/^postwrf_d01_([0-9]{4})([0-9]{2})([0-9]{2})_([0-9]{4})_f0([0-9]{4}).grb2$/\1 \2 \3 \4 \5/'  )
YYYY="$1"
MM="$2"
DD="$3"
ZZZZ="$4"
HHHH="$5"

OUTPUT_1= "d01_${YYYY}${MM}${DD}_${ZZZZ}_f0${HHHH}.grb2"

# Now calculate the hour to minutes with the (( )) function. (See man bash for arithmetic evaluation).
((MINUTES=....))
# For leading zeros you may need to use printf. 
MINUTES=$(printf "%04d" $MINUTES)


Last edited by stomp; 05-27-2016 at 01:37 PM..
This User Gave Thanks to stomp 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

Date format conversion how to change this from using nawk to awk

Hi, I have a file where I need to change the date format on the nth field from DD-MM-YYYY to YYYY-MM-DD so I can accurately sort the record by dates From regex - Use sed or awk to fix date format - Stack Overflow, I found an example using nawk. Test run as below: $: cat xyz.txt A ... (2 Replies)
Discussion started by: newbie_01
2 Replies

2. Shell Programming and Scripting

Date format conversion

Hi, i have to check the file whether it is created today. here is the ls -l o/p -rw-r----- 20000 50000 130 Dec 12 10:21 file.txt im able to check if file is created today or not if the timestamp is in 2014-12-12 format by comparing $(date +Y-%m-%d) but stuckup as it is of format Dec 12... (6 Replies)
Discussion started by: JSKOBS
6 Replies

3. Shell Programming and Scripting

Date conversion and Format

Hello , I have a record in below format Hostname | Query: 0 | Release: 0 | files: 2 | Files_examined: 2 | SET timestamp=1396778638; | select * from test I need output in below format Hostname | 0 | 0 | 2 | 2 | 04/06/2014|03:03:58 | select * from test I was able to get above output... (1 Reply)
Discussion started by: Tomlight
1 Replies

4. Shell Programming and Scripting

Date conversion from 24 hr format to 12 hr format

hi i want to convert date procured from sone operation which will be in 24hr format to 12 hr format displaying AM and PM # date -d @1362545068 Tue Mar 5 23:44:28 EST 2013 # this Tue Mar 5 23:44:28 EST 2013 i want to convert it so that output is as below Tue... (2 Replies)
Discussion started by: vivek d r
2 Replies

5. Shell Programming and Scripting

Military type format date/time conversion

Hello All, I have a requirement to convert a 12 hour format to 24 hour time format and the sample input /out put is below Input Time format : Nov 2 2011 12:16AM Out Put Format : Nov 2 2011 0:16 Input : Nov 2 2011 4:16PM Out Put: Nov 2 2011 16:16 I have done this using a... (6 Replies)
Discussion started by: jambesh
6 Replies

6. Shell Programming and Scripting

Date format conversion

Hi All, Can someone please let me know how can i convert the date format in unix as follow: From: 24 Oct 2011 i.e $(date +'%d %b %Y') To: 111024 i.e $(date +%y%m%d) Thanks in advance (3 Replies)
Discussion started by: davidtd
3 Replies

7. Shell Programming and Scripting

Most vexing: Sed or Awk scripting for date conversion needed

Hi, I have some files being sent to me that have dates in them in this format: from 1/8/2011 15:14:20 and I need the dates in this format (mysql date format) To 2011-01-08 15:14:20 all I have so far is the regexp that detects the format: sed -r -e 's@\1/\2/\3\4\5\6]::$@do... (7 Replies)
Discussion started by: Astrocloud
7 Replies

8. Shell Programming and Scripting

Date conversion from Standard/given format to seconds/epoch

I am trying get time difference of two dates in secs. Initially I want to convert a standard date format to epoch for two dates and then subtract the two epoch dates. Example : date -d "2007-09-01 17:30:40" '+%s' But this gives me below error date: illegal option -- d Usage: date OS: AIX... (6 Replies)
Discussion started by: bpaac
6 Replies

9. UNIX for Dummies Questions & Answers

date format conversion

hi, i have a file in which i get date format as 22/APR/2010... now i want the date format to be in 22-04-2010 if the month changes to may the file should also have 05 as month.... pls help (3 Replies)
Discussion started by: siva_nagarajan
3 Replies

10. UNIX for Dummies Questions & Answers

Date format conversion function

Hello, does somebody knows about a function that would convert a date like: YYMMDD into a date like YYYY-MM-DD ? Thank you for your ideas :) (9 Replies)
Discussion started by: Cecile
9 Replies
Login or Register to Ask a Question