This is not only not easy, but some records will be impossible to translate, be it manually or by program logic - those using two numbers below 13 for day and month in an undefined order. These will be printed to an error file. For the rest, and if your awk versions allows for it, try:
Code:
$ awk 'BEGIN {split("Jan Feb Mar Apr May Jun Jul AUg Sep Oct Nov Dec", months)}
NR==1 {print;next}
{n=split ($1,Dt,"[-/ :]") # split all date/time info into up to 7 array elements
if (!(Dt[1]+0)) {Mon=Dt[1]; Day=Dt[2]} # check if there's an alpha month's name; use it, the other element is the day
else if (!(Dt[2]+0)) {Mon=Dt[2]; Day=Dt[1]}
else if (Dt[1]>12) {Mon=months[Dt[2]]; Day=Dt[1]} # check if there's one element greater than 12 - must be a day; use it, the other is a month
else if (Dt[2]>12) {Mon=months[Dt[1]]; Day=Dt[2]}
else {print > "errorfile";next} # all other records cannot be correctly translated
if (Dt[7]=="PM") Dt[4]+=12 # handling PM may need to be refined
print Day"-"Mon"-"Dt[3], Dt[4]":"Dt[5]":" sprintf ("%02d",Dt[6]+0), $2, $3, $4,$5
}
' FS="," file
DATE,PR,ST,ONC,NOD
19-Jul-1979 18:00:00 748 1 43 1
25-Jan-1979 06:00:00 748 1 43 1
20-Jan-1979 06:00:00 748 1 43 1
31-Sep-1979 06:00:00 748 1 43 1
20-Jan-1979 06:00:00 748 1 43 1
31-Sep-1979 06:00:00 748 1 43 1
25-Jul-1979 03:00:00 748 1 43 1
The AM/PM logics may need some refinement, as does the output of the time fields in general. Regard this as an exercise for yourself...
i need date in the following format December 14, 2005.
With date +"%b %d, %Y" command i am getting the following output :- Dec 14, 2005.
can anyone pls tell me how to get the full month name (2 Replies)
Hi
i need to have the date in the format like dd-mon-yyyy
my script goes like this
#!/usr/bin/bash
for f in /space/can /home/lbs/current/externalcdrbackup/L_CDR_Configuration/1/200903122* ; do
awk '{sum++;}END{for(i in sum) {print d,h,m,i, sum}}' "d=$(date +'%m-%d-%Y')" "h=$(date +'%H')"... (8 Replies)
Hi -
I'm using GeekTool to customize my desktop in OS X 10.5.8
I'm a complete novice as far as UNIX commands, just know enough to be dangerous.
I have a command entered as a Shell to display my events from iCal:
This makes my events show something like this:
While this is... (1 Reply)
Hi,
the date value retrieved by a parameter from the table is of the format dd/mm/yyyy. please let me know how to convert this to YYYYMMDD using sed
thanks (4 Replies)
while read l
do
vTimeCreated=`perl -e '@d=localtime ((stat(shift))); printf "%02d-%02d-%04d %02d:% 02d:%02d\n", $d,$d+1,$d+1900,$d,$d,$d' ${l}`
echo "${l} || ${vTimeCreated}" >> ${fPrefx}_Output_Files_${vDate}.txt
done < servername.txt Using the above code to format date time for each of the... (0 Replies)
while read l
do
vTimeCreated=`perl -e '@d=localtime ((stat(shift))); printf "%02d-%02d-%04d %02d:% 02d:%02d\n", $d,$d+1,$d+1900,$d,$d,$d' ${l}`
echo "${l} || ${vTimeCreated}" >> ${fPrefx}_Output_Files_${vDate}.txt
done < servername.txt
Using the above code to format date time for each of... (5 Replies)
Hi,
How can i store the date + time from the output of the ls command in loop in a variable date1?
-rw-rw---- 1 user1 admin 500002 Jan 2 21:24 P002607.cssI then want to convert Jan 2 21:24 to this date format 2014-01-02 21:24:00 and save it in date2 variable.
Then i would like to add... (1 Reply)
Discussion started by: mohtashims
1 Replies
LEARN ABOUT ULTRIX
date
date(1) General Commands Manual date(1)Name
date - print date and time
Syntax
date [-c | -u] [ +format ] [[yy[mm[dd]]]hhmm[.ss][-[-]tttt][z]]
Description
If no argument is given, or if the argument begins with +, the current date and time are printed. Otherwise, the current date is set. The
first mm is the month number; dd is the day number in the month; hh is the hour number (24 hour clock); the second mm is the minute number;
.ss the second; -[-]tttt is the minutes west of Greenwich; a positive number means your time zone is west of Greenwich (for example, North
and South America) and a negative number means it is east of Greenwich (for example Europe); z is a one letter code indicating the dst cor-
rection mode (n=none, u=usa, a=australian, w=western europe, m=middle europe, e=eastern europe); yy is the last 2 digits of the year number
and is optional. The following example sets the date to Oct 8, 12:45 AM:
date 10080045
The current year is the default if no year is mentioned. The system operates in GMT. The takes care of the conversion to and from local
standard and daylight time.
If the argument begins with +, the output of is under the control of the user. The format for the output is similar to that of the first
argument to All output fields are of fixed size (zero padded if necessary). Each field descriptor is preceded by % and is replaced in the
output by its corresponding value. A single % is encoded by %%. All other characters are copied to the output without change. The string
is always terminated with a new-line character.
Options-c Perform operations using Coordinated Universal Time (UCT) instead of the default local time. The UCT does not use leap seconds so
UCT is the same as GMT.
-u Perform operations using Greenwich Mean Time (GMT) instead of the default local time.
+ format
The following is a list of field Descriptors that can be used in the format (Note: date exits after processing format information) :
%a Locale's abbreviated weekday name
%A Locale's full weekday name
%b Locale's abbreviated month name
%B Locale's full month name
%c Locale's date and time representation
%d Day of month as a decimal number (01-31)
%D Date (%m/%d/%y)
%h Locale's abbreviated month name
%H Hour as a decimal number (00-23)
%I Hour as a decimal number (01-12)
%j Day of year (001-366)
%m Number of month (01-12)
%M Minute number (00-59)
%n Newline character
%p Locale's equivalent to AM or PM
%r Time in AM/PM notation
%S Second number (00-59)
%t Tab character
%T Time (%H/%M/%S)
%U Week number (00-53), Sunday as first day of week
%w Weekday number (0[Sunday]-6)
%W Week number (00-53), Monday as first day of week
%x Locale's date representation
%X Locale's time representation
%y Year without century (00-99)
%Y Year with century
%Z Timezone name, no characters if no timezone
%% %
Examples
The following command line
date +%m/%d/%y
generates the following output
04/02/89
The following command line
date +"DATE: %m/%d/%y%nTIME: %H:%M:%S"
generates the following output
DATE: 04/02/89
TIME: 14:45:05
The quotes (") are necessary because the format contains blank characters. Use single quotes (') to prevent interpretation by the shell.
Diagnostics
Failed to set date: Not owner
You are not the super-user and you tryed to change the date. Do not change the date while the system is running in multiuser mode.
Restrictions
An attempt to set a date to before 1/1/1970 will result in the date being set to 1/1/1970.
Files
/dev/kmem
date(1)