Unix/Linux Go Back    


Shell Programming and Scripting Unix shell scripting - KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and shell scripts and shell scripting languages here.

Awk to find space and tab.

Shell Programming and Scripting


Closed    
 
Thread Tools Search this Thread Display Modes
    #1  
Old Unix and Linux 06-01-2009
pinnacle pinnacle is offline
Registered User
 
Join Date: Apr 2009
Last Activity: 27 May 2015, 2:58 PM EDT
Posts: 243
Thanks: 9
Thanked 1 Time in 1 Post
Awk to find space and tab.

Wants to print line when there exist leading or trailing space or tab in fields 2,3 and 5

The below code prints all lines in file even if they dont have leading and trailing space or tab.

Code:
nawk -F"|" '{for(i=1;i<=NF;i++) {if ($i ~ "^[ \t]*" || $i ~ "[ \t]*$")}}1' file

file
Quote:
newyork|times square| centralpark|abc|def |t
washington| capitol | museum |abc|def |t
texas|dallas|san antonio|abc|def|t
Ouput required:
Quote:
newyork|times square| centralpark|abc|def |t
washington| capitol | museum |abc|def |t
Thanks
Sponsored Links
    #2  
Old Unix and Linux 06-01-2009
reborg's Unix or Linux Image
reborg reborg is offline Forum Advisor  
Administrator Emeritus
 
Join Date: Mar 2005
Last Activity: 29 March 2012, 7:00 PM EDT
Location: Ireland
Posts: 4,464
Thanks: 0
Thanked 12 Times in 11 Posts
Change the * to +. You have made the extremely common mistake of using an REGEX with a zero length match.
Sponsored Links
    #3  
Old Unix and Linux 06-01-2009
pinnacle pinnacle is offline
Registered User
 
Join Date: Apr 2009
Last Activity: 27 May 2015, 2:58 PM EDT
Posts: 243
Thanks: 9
Thanked 1 Time in 1 Post
Quote:
Originally Posted by reborg View Post
Change the * to +. You have made the extremely common mistake of using an REGEX with a zero length match.

Code:
 nawk -F"|" '{for(i=1;i<=NF;i++) {if ($i ~ "^[ \t]+" || $i ~ "[ \t]+$")}}1' file

still the same thing.
And i want to look 2,3 and 5th field only not all the fields
    #4  
Old Unix and Linux 06-01-2009
reborg's Unix or Linux Image
reborg reborg is offline Forum Advisor  
Administrator Emeritus
 
Join Date: Mar 2005
Last Activity: 29 March 2012, 7:00 PM EDT
Location: Ireland
Posts: 4,464
Thanks: 0
Thanked 12 Times in 11 Posts
Yes, but you also have a '1' there, so you are printing every line. You need to delete that too, any you do nothing in the for loop/if statement.

Just check the field number in the for lop and print out the lines you want.
Sponsored Links
    #5  
Old Unix and Linux 06-02-2009
pinnacle pinnacle is offline
Registered User
 
Join Date: Apr 2009
Last Activity: 27 May 2015, 2:58 PM EDT
Posts: 243
Thanks: 9
Thanked 1 Time in 1 Post
Quote:
Originally Posted by reborg View Post
Yes, but you also have a '1' there, so you are printing every line. You need to delete that too, any you do nothing in the for loop/if statement.

Just check the field number in the for lop and print out the lines you want.
I removed 1 and now i want to check for leading and trailing space or tab on each field.
The below code returns nothing.

Code:
nawk -F"|" '{for(i=1;i<=NF;i++) {if ($i ~ "^[ \t]+" || $i ~ "[ \t]+$")}}' file

Help appreciated
Sponsored Links
    #6  
Old Unix and Linux 06-03-2009
pinnacle pinnacle is offline
Registered User
 
Join Date: Apr 2009
Last Activity: 27 May 2015, 2:58 PM EDT
Posts: 243
Thanks: 9
Thanked 1 Time in 1 Post
Quote:
Originally Posted by pinnacle View Post
I removed 1 and now i want to check for leading and trailing space or tab on each field.
The below code returns nothing.

Code:
nawk -F"|" '{for(i=1;i<=NF;i++) {if ($i ~ "^[ \t]+" || $i ~ "[ \t]+$")}}' file

Help appreciated
I got the following code to work
But would like to remove sort -u and handle it with in awk

Code:
nawk -F"|" '{for(i=1;i<=NF;i++) {if ($i ~ "^[ \t]+" || $i ~ "[ \t]+$") print $0}}' file | 
sort -u  > outfile

Sponsored Links
Closed

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Linux More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
for i in `find *` breakdown since the directory name has space patiobarbecue Shell Programming and Scripting 3 12-09-2008 10:44 AM
How to find the free space & usage of the particular directory in Hp-Unix? bobprabhu UNIX for Dummies Questions & Answers 2 06-27-2008 01:05 PM
Find lines with space between strings Galt Shell Programming and Scripting 5 05-07-2008 02:06 PM
How to find the top 6 users (which consume most space)? RebelDac AIX 5 09-17-2007 06:36 PM
How to find the size of Process Address space. S.Vishwanath UNIX for Dummies Questions & Answers 1 07-10-2001 08:46 AM



All times are GMT -4. The time now is 07:19 PM.