Why does this awk statement work?


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Why does this awk statement work?
# 1  
Old 02-28-2011
Why does this awk statement work?

So, I have an awk statement that does a little filtering and formats the output conveniently. Here's what I had originally:

Code:
<input> | awk -F "\t" 'BEGIN{OFS=","} {sub(" ","_",$2)} (NR == 1) || (substr($2,9,2) >= 19 && substr($2,1,7) == "2011-02") {print}'

That did what I wanted, except that the header line was not properly formatted; specifically, it was still tab-delimited, rather than comma-delimited. I did some hunting about and found a solution I don't understand:

Code:
<input> | awk -F "\t" 'BEGIN{OFS=","} {sub(" ","_",$2)} (NR == 1) || (substr($2,9,2) >= 19 && substr($2,1,7) == "2011-02") {$1 = $1 ; print}'

Why does that $1 = $1 fix the first line? Thanks in advance.
# 2  
Old 02-28-2011
A modification of a field causes awk to recompile the current record and all occurrences of FS get changed to OFS.
Assigning any field to itself will do that without changing the actual data.
# 3  
Old 03-01-2011
Ah, good. Thanks for the reply. That makes sense.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Convert Update statement into Insert statement in UNIX using awk, sed....

Hi folks, I have a scenario to convert the update statements into insert statements using shell script (awk, sed...) or in database using regex. I have a bunch of update statements with all columns in a file which I need to convert into insert statements. UPDATE TABLE_A SET COL1=1 WHERE... (0 Replies)
Discussion started by: dev123
0 Replies

2. Shell Programming and Scripting

How come this if statement doesn't work?

greetings, the following code isn't working as i expect it to. the first dbl brackets do but the second set gets ignored. ie: if i'm on t70c6n229 it echoes "Something" and i expect it not to. what am i missing? if " ]] || " ]]; then echo "Something" fi thanx! (9 Replies)
Discussion started by: crimso
9 Replies

3. Shell Programming and Scripting

My if statement doesn't work why?

I have the following and for some reason I can't have two options together. I mean if I choose -u and -p it won't work... why? #!/bin/bash resetTime=1 mytotalTime=0 totalHour=0 totalMin=0 averagemem=0 finalaverage=0 times=0 function usage() { cat << EOF USAGE: $0 file EOF } (10 Replies)
Discussion started by: bashily
10 Replies

4. UNIX for Dummies Questions & Answers

SQL statement is not work on unix script

Hi, I have the following basic script. However, the statement (line 5) is not work. The output data is not able to set my request format a30. Any advise? :mad: echo " Column filename format a30"|sqlplus4 echo Input file list to check: read filelist for file in `cat $filelist.txt` do... (1 Reply)
Discussion started by: happyv
1 Replies

5. Shell Programming and Scripting

Parse file using awk and work in awk output

hi guys, i want to parse a file using public function, the file contain raw data in the below format i want to get the output like this to load it to Oracle DB MARWA1,BSS:26,1,3,0,0,0,0,0.00,22,22,22.00 MARWA2,BSS:26,1,3,0,0,0,0,0.00,22,22,22.00 this the file raw format: Number of... (6 Replies)
Discussion started by: dagigg
6 Replies

6. Shell Programming and Scripting

awk inside another awk statement

hi all, i have two files 1) a.txt one two three 2) abc "one" = 10 pqr "three" = 20 345 "two" = 0 this is what i want in third file (3 Replies)
Discussion started by: shishirkotkar
3 Replies

7. Shell Programming and Scripting

awk: assign variable with -v didn't work in awk filter

I want to filter 2nd column = 2 using awk $ cat t 1 2 2 4 $ VAR=2 #variable worked in print $ cat t | awk -v ID=$VAR ' { print ID}' 2 2 # but variable didn't work in awk filter $ cat t | awk -v ID=$VAR '$2~/ID/ { print $0}' (2 Replies)
Discussion started by: honglus
2 Replies

8. UNIX for Dummies Questions & Answers

Ksh Why Won't IF Statement work?

I'm trying to figure out why this if statement won't work: if || $zipcount != 6 ]] then echo ${myline} echo "ZIPCODE WARNING! ${zipcode} ${zipcount}" fi if ]] then echo ${myline} echo "STATE WARNING!... (3 Replies)
Discussion started by: developncode
3 Replies

9. Shell Programming and Scripting

i can't get my if statement to work, please help

I can't get this IF to work... I need to verify user input with the proper format and only options that could have been entered. shell using is sh (Solaris 8) thank you. code: -------------------------------------------- procMonth=$1 correctValues="01 02 03 04 05 06 07 08 09 10... (2 Replies)
Discussion started by: MrJaunty
2 Replies

10. UNIX for Dummies Questions & Answers

my case statement doesn't work..

CO UNixware 7.1.1 Hi friends, I have chopped my case statementt out of my .profile and put it in another script called setsid. The case statement works when run from my .profile but not from my setsid file. All that the script does is set an environmental variable based on user input.... (7 Replies)
Discussion started by: sureshy
7 Replies
Login or Register to Ask a Question