awk equivalent script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk equivalent script
# 8  
Old 02-12-2008
OK,
I'll try.

Code:
x[$1]++

While the first field is the same, you have:

Code:
x[$1] is 0 
x[$1] is 1
x[$1] is 2

and so on ...

In Awk an uninitialized variable have the numeric value zero,
that's why when seen for the first time x[$1] is 0.

When the value of $1 changes the cycle is reinitialized.

Code:
$0=NR==1?$0:RS $0

This is a shortcut that I'm using as assignment (and could appear a bit confusing).

It means: assign to $0 (the entire record) the value of RS $0
(the default record separator - newline) and the record itself:
in other words: prepend a newline to the record if the record
is not the first record (otherwise you'll get a newline prepended
to the first record, because x[$1] will be 0).

It's the same as:

Code:
if (NR == 1)
  $0 = $0
else
  $0 = ("\n" $0)

As you know, an awk program looks like this:

Code:
pattern [or expression] { action }

So the above code says:

[pattern/expression]

if x[$1]++ is true: is not 0 (for Awk 0 and NULL are false)

|| (logical OR, double pipe)

$0=NR==1?$0:RS $0 is true (and it's already assigned, while tested Smilie)
(in this case the above expression will always be true, guess whySmilie)

[action]

the action part is omitted which means use the default action:
print the current record.

Hope it makes sense ...


# 9  
Old 02-12-2008
In this case it could be even:

Code:
x[$1]++||$0=NR==1?$0:RS$0

No space between RS and $0 Smilie
# 10  
Old 02-12-2008
Thanks Radoulov - I think I'm going to have to read it thru a few times before it sinks in tho Smilie

...I'm sure I'm on the cusp of really knowing awk so it's worth the time.

Thanks again,

p.
# 11  
Old 02-12-2008
Thanks Radoulov - I think I'm going to have to read it thru a few times before it sinks in tho Smilie

...I'm sure I'm on the cusp of really knowing awk so it's worth the time.

Thanks again,

p.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

awk script Equivalent .

Hello. I wrote some code for an awk command but I want to learn to turn it into an awk script but am stuck. I have a file (data.csv) that has the following data: ADD,1,3,5,8,10,11,54 SUB,1,2,3,4 ADD,15,18,21,42,37 ADD,1,1,1,0,0,3,16 ADD,4,1,8,0,4,6,13,16,17,20,8,6,4 SUB,13,8If the line... (5 Replies)
Discussion started by: Eric7giants
5 Replies

2. Shell Programming and Scripting

sed Equivalent for awk/grep

Any equivalent command using awk or grep? sed -n "/^$(date --date='10 minutes ago' '+%b %_d %H:%M')/,\$p" /abc.log (7 Replies)
Discussion started by: timmywong
7 Replies

3. Shell Programming and Scripting

Java - Arrays.binarySearch function equivalent in awk

Hi all Does anyone know Java-Arrays.binarySearch function equivalent in awk I tried like this but it's not correct one,it just returns array index if and only when searched value available in array, for some reason if searched value not found then I want to return upper nearest neighbour index.... (1 Reply)
Discussion started by: Akshay Hegde
1 Replies

4. Shell Programming and Scripting

awk equivalent code in C for printing NF

Hi all ! whether anyone in forum knows what awk will use while printing number of fields in file(NF) ? for example awk END'{print NF}' file prints number of columns in file if anyone knows equivalent code in C kindly share or explain logic behind it (8 Replies)
Discussion started by: Akshay Hegde
8 Replies

5. Shell Programming and Scripting

What is the equivalent of NR (awk) in perl?

Hello, I searched online; it seems that perl use $NR as NR in awk; however it does not work for me. For example, how to re-write the following awk using perl: awk '{ print NR}' inputfile---------- Post updated at 01:55 PM ---------- Previous update was at 12:49 PM ---------- I found... (2 Replies)
Discussion started by: littlewenwen
2 Replies

6. Shell Programming and Scripting

awk equivalent of regex

Hi all, Can someone tell me what's the (g)awk equal of this simple regex to find ip addresses in urls: egrep "^http://{1,3}\.{1,3}\.{1,3}\.{1,3}(:{1,5})?/"Input: http://10.0.0.1/query.exe http://11y10x09w:80/howaboutme http://192.168.100.190:1234/takeme.gpg Output:... (8 Replies)
Discussion started by: r4v3n
8 Replies

7. Windows & DOS: Issues & Discussions

awk to findstr equivalent

Hi, I 'd like to translate this command from awk to findstr on Windows DOS FILE: str1 server1 a str1 server2 a str2 server1 b str2 server2 b Awk command: awk ' $1 ~/str1/ { print $2, $3 } ' file.txt OUTPUT: server1 a server2 a Thanks, (1 Reply)
Discussion started by: phamp008
1 Replies

8. Shell Programming and Scripting

Bash Script equivalent KSH script?

I always find BASH easier than ksh. At my home, i have written this bash script. I am finding it hard to write its equivalent in ksh, any suggestions? ###################################### #return seconds since `00:00:00 1970-01-01 UTC' (a GNU extension)... (1 Reply)
Discussion started by: boy18nj
1 Replies

9. Linux

Need SCP script equivalent to FTP script .

Hi, Currently i'm using the folllowing FTP acript and its working. echo "open $server" > ftp_file echo "user $user $password" >> ftp_file echo "cd $remote_dir" >> ftp_file echo "lcd $local_dir" >> ftp_file echo "put $file">> ftp_file echo "bye" >> ftp_file ftp -nv < ftp_file I've... (1 Reply)
Discussion started by: vickramshetty
1 Replies

10. Shell Programming and Scripting

shell script equivalent for tcl function

Hello, I need experts help in converting the below tcl function to korn shell function equivalent. proc lsNetMaskToBits {mask} { set dw ; # Top N bits set set dw 0x ; # Make sure it's hexadecimal, else XOR fails. puts "lsNetMaskToBits dw $dw" set dw ; # Complement => low 32-N bits... (1 Reply)
Discussion started by: JackMelson
1 Replies
Login or Register to Ask a Question