gawk script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting gawk script
# 1  
Old 05-28-2008
gawk script

Hey guys need your help with an gawk script... here's what I have so far

gawk '^d/ {printf "%-20s %-10s %-10s %-10s %-4s%2s %5s\n",$9,$1,$3,$4,$6,$7,$8}' ls.kbr

The file ls.kbr is a capture of 'ls-al'

What I want gawk to do is:
1) Find only directories (this is working)
2) skip lines beginning containing . and .. directories
3) skip lines where the directory name is longer than 8 characters
4) determine the longest length of each field, and use that
length as a width specifier for each %s in printf(). You can see I'm
hardcoding the length for now.

TIA
Zoo591
# 2  
Old 05-28-2008
Code:
ls -la | awk '/^d/ && length($9) <= 8 {
          if ( $9 == "." || $9 == "..") next;
          F[++j]=$0;
          if (max1 < length($9)) max1=length($9);
          if (max2 < length($1)) max2=length($1);
          if (max3 < length($3)) max3=length($3);
          if (max4 < length($4)) max4=length($4);
          if (max5 < length($6)) max5=length($6);
          if (max6 < length($7)) max6=length($7);
          if (max7 < length($8)) max7=length($8);
}
END{ for (i=1; i<=j; i++)
   {
    split(F[i], M);
    printf "%-*s %-*s %-*s %-*s %-*s%*s %*s\n", max1, M[9], max2, M[1], max3, M[3], max4, M[4], max5, M[6],max 6, M[7],max7, M[8]
   }
}'

Quote:
Originally Posted by zoo591
Hey guys need your help with an gawk script... here's what I have so far

gawk '^d/ {printf "%-20s %-10s %-10s %-10s %-4s%2s %5s\n",$9,$1,$3,$4,$6,$7,$8}' ls.kbr

The file ls.kbr is a capture of 'ls-al'

What I want gawk to do is:
1) Find only directories (this is working)
2) skip lines beginning containing . and .. directories
3) skip lines where the directory name is longer than 8 characters
4) determine the longest length of each field, and use that
length as a width specifier for each %s in printf(). You can see I'm
hardcoding the length for now.

TIA
Zoo591
# 3  
Old 05-28-2008
Nicely done. You are numero uno AWK!Smilie

Quote:
Originally Posted by awk
Code:
ls -la | awk '/^d/ && length($9) <= 8 {
          if ( $9 == "." || $9 == "..") next;
          F[++j]=$0;
          if (max1 < length($9)) max1=length($9);
          if (max2 < length($1)) max2=length($1);
          if (max3 < length($3)) max3=length($3);
          if (max4 < length($4)) max4=length($4);
          if (max5 < length($6)) max5=length($6);
          if (max6 < length($7)) max6=length($7);
          if (max7 < length($8)) max7=length($8);
}
END{ for (i=1; i<=j; i++)
   {
    split(F[i], M);
    printf "%-*s %-*s %-*s %-*s %-*s%*s %*s\n", max1, M[9], max2, M[1], max3, M[3], max4, M[4], max5, M[6],max 6, M[7],max7, M[8]
   }
}'

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Gawk program not working in a script

I've written a very simple gawk program which runs when I execute it at the POSIX shell but the corresponding '.awk' script I wrote doesn't return any data. I'm on an HP-UX running gawk version 3.1. (w/all the defaults) (As you can probably guess I'm a newbie going through the manual and trying... (2 Replies)
Discussion started by: RUCerius
2 Replies

2. Shell Programming and Scripting

[BASH] Gawk + MYSQL script

Hello! I've got script to write. It should read databases (names, volumes) from table testdatabase and compares it to actually existing databases in /var/lib/mysql/. If there is no informations about database in table - we should see information "There is no declared informations about database... (1 Reply)
Discussion started by: Zimny
1 Replies

3. Shell Programming and Scripting

gawk script to search and replace text in a flat file

Hi I am new to unix and newbie to this forum. I need help in writing a gawk script that search and replace particular text in a flat file. Input file text : ZIDE_CONTROL000 100000000003869920900000300000001ISYNC 000002225489 0000000002232122 20120321 16:40:53 ZIDE_RECORD000... (5 Replies)
Discussion started by: gkausmel
5 Replies

4. Shell Programming and Scripting

Help with gawk array, loop in tcsh script

Hi, I'm trying to break a large csv file into smaller files and use unique values for the file names. The shell script i'm using is tcsh and i'm after a gawk one-liner to get the desired outcome. To keep things simple I have the following example with the desired output. fruitlist.csv apples... (6 Replies)
Discussion started by: theflamingmoe
6 Replies

5. Windows & DOS: Issues & Discussions

Gawk Script in Windows batch file - Help

Good morning all. I have been running into a problem running a simple gawk script that selects every third line from an input file and writes it to an output file. gawk "NR%3==0" FileIn > FileOut I am attempting to run this command from a batch file at the command line. I have several hundred... (6 Replies)
Discussion started by: 10000springs
6 Replies

6. Programming

need help with gawk script

hi i've already created this script. When I execute the script it takes the argument and compares it to the 3rd column of the script. What I was wondering if I could get some help with is. I want to add another column to the script and it will be the result of a set number for example, (2000 - 3rd... (3 Replies)
Discussion started by: gengar
3 Replies

7. Shell Programming and Scripting

Help with gawk script that aggregates ip address ranges

Howdy folks, perhaps someone can help me with this problem. My knowledge of awk is not the best... but I've managed to a certain degree and now I'm stuck. These are the steps and the format outputs, problem is written in red text after the STEP 2: STEP 1 Unformated text file (100+... (3 Replies)
Discussion started by: gustisok
3 Replies

8. Shell Programming and Scripting

Issues with filtering duplicate records using gawk script

Hi All, I have huge trade file with milions of trades.I need to remove duplicate records (e.g I have following records) 30/10/2009,trdeId1,..,.. 26/10/2009.tradeId1,..,..,, 30/10/2009,tradeId2,.. In the above case i need to filter duplicate recods and I should get following output.... (2 Replies)
Discussion started by: nmumbarkar
2 Replies

9. UNIX for Dummies Questions & Answers

Calculating field using AWK, or GAWK script

Hello all, I'm totally new to UNIX/Linux but I'm taking a course in it at my local JC. My question: I have been tasked with writing a gawk script that will create a nicely formatted report. That part I've done ok on...however, the very last thing that must be done is a calculation of a... (4 Replies)
Discussion started by: Trellot
4 Replies

10. Shell Programming and Scripting

how to use variables and gawk in a script?

Hi, I want to define variables in a shell script and make gawk use them to make some operations Mfn = $(grep " 1 " $fitxer | gawk '{print $2}') Xfn = $(grep " 1 " $fitxer | gawk '{print $3}') Yfn = $(grep " 1 " $fitxer | gawk '{print $4}') Zfn = $(grep " 1 " $fitxer | gawk... (9 Replies)
Discussion started by: pau
9 Replies
Login or Register to Ask a Question