That is because your ls output is slightly different to mine (this is quite likely if you are on a different OS to me).
This is why I need the output of ls -ntra on your system so I could adjust the values of S (start) and L (length) for your system.
Again please use the [code] and [/code] tags around your posting of the ls -ntra output so the forum dosn't strip spaces as these are important in determining character positions for the columns.
I couldn't access my server for some reason it is down I guess. I was trying for a while but I couldn't. But I for the awk script I was using in this fashion
Let me know if this should be good and can you please run me through your code about the function you declared and about the substrings you wrote. Sorry I'm finding bit tougher to get understand the process.
Thanks a lot for your help in this issue.
Last edited by Scott; 02-02-2011 at 06:59 PM..
Reason: Fixed code tags...
Ok the function max(a,b) returns the maximum of two integers, ie highest of a or b.
FNR==1 {file++} This says if file line number is 1 (first line of the file) then increment file variable. This is used to test what file is being processed 1=/etc/group 2=/etc/passwd 3=ls output.
file==1 {g[$3]=$1;GW=max(GW,length($1));next} This loads the group file into the has array g[] with the group id (field 3) as the key and group name (field 1) as the data. It also uses the max(a,b) function to set GW as maximum length of groupname.
file==2 {p[$3]=$1;PW=max(PW,length($1));next} same as group above except hash array is p[] and PW is maximum login.
This extracts the UID and GID from the ls output by fetching a substring from S to S+L and spliting it up using space seperators into ID[1] and ID[2] variables.
The string from 0-S is printed
The ID[1] (UID) field is looked up in the P[] hash array and the loginID is fetched, this is printed left justified to a width of PW.
The ID[2] (GID) field is looked up in the G[] hash array and the GroupName is fetched, this is printed left justified to a width of GW.
The the rest of the ls string from S+L to the end is printed.
Damn, the length of the UID and GID fields are so long they have pushed out the alignment of all the following columns.
Best idea to fix this is to re-format all the fields up to field 5 and then use the raw ls string from there. The format ls uses for dates varies in width and number of elements depending on when the date is (e.g. older than 1 year or future dates also have YYYY). Not to mention filenames with spaces, etc. So it's best to just substring out the ls output after filesize and print it as-is.
I've added a function toend(str, n) that strips the first n space separated fields from the front of a string. We use toend($0,5) to get the date and filename part of the ls listing.
Last edited by Chubler_XL; 02-01-2011 at 07:39 PM..
Reason: spelling
Thanks again. The main issue is I cant put it in my path, I have to put this code in .profile so that any user who types ls should have the longlist group name ( Just the groupname which i have mentioned functional-wireless- consumer) displayed.
And I have to put it as alias in .profile as,
so that if any user who types in mike would have the complete long list groupname displayed.
Hi,
I am totally a newbie to any programming languages and I just started an entry level job in an IT company. One of my recent tasks is to create a script that is able to show the log file of linux service (i.e. ntpd service)
lets say, if I run my script ./test.sh, the output should be... (3 Replies)
Dear Friends,
Please help me on this
my script name is send.csh
In this i have written the statement like this
set args = ( city state country price )
I want to pass this array to another c shell called receiver.csh. and i want to use it in this c shell
or
how to pass to... (2 Replies)
Dear Unix gurus,
We have a config shell script file which has 30 variables which needs to be passed to master unix shell script that invokes oracle database sessions. So those 30 variables need to go through the database sessions (They are inputs) via a shell script. one of the variable name... (1 Reply)
Dear Unix gurus,
We have a config shell script file which has 30 variables which needs to be passed to master unix shell script that invokes oracle database sessions. So those 30 variables need to go through the database sessions (They are inputs) via a shell script. one of the variable name... (1 Reply)
I have a shell script (.sh) and I want to pass a parameter value to the awk command but I am getting exception, please assist.
diff=$1$2.diff
id=$2 new=new_$diff
echo "My id is $1"
echo "I want to sync for user account $id"
##awk command I am using is as below
cat $diff | awk... (2 Replies)
Hi All,
I have new for shell scripting.
Problem : I have one scrip at serv1 and path of server is /apps/dev/provimage/scripts and script name:extract_ancillary.bat.
I need to call this script at server2(my working server) and execute at server2 .
Please let me know how to build the... (5 Replies)
Hi,
I basically have 2 shell scripts.
One is a shell script will get the variable value from the user. The variable is nothing but the IP of the remote system.
Another shell script is a script that does the job of connecting to the remote system using ssh. This uses a expect utility in turn.
... (2 Replies)
i want use ssh on the host01 to execute autoexec.sh on the host02 like following :
host01> ssh host02 autoexec.sh
autoexec.sh include nohup command like follwing :
nohup /home/jack/deletedata.sh &
after i execute ssh host02 autoexec.sh one the host01. i can't found deletedata.sh... (1 Reply)
Hi,
I have an HTML form through which I get some text as input. i need to run a shell script say script.sh inside a perl-cgi script named main_cgi.sh on the form input.
I want to write the contents of the form in a file and then perform some command line operations like grep, cat on the text... (2 Replies)
Hi Perl/UNIX experts,
I have a problem in running a shell script from my perl script (auto.pl).
I run the perl script using
perl auto.pl
from the shell prompt
The shell script picks the files in "input" folder and procesess it.
The shell script blue.sh has this code.
export... (16 Replies)