Awk to find space and tab.


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Awk to find space and tab.
# 1  
Old 06-01-2009
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
# 2  
Old 06-01-2009
Change the * to +. You have made the extremely common mistake of using an REGEX with a zero length match.
# 3  
Old 06-01-2009
Quote:
Originally Posted by reborg
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 06-01-2009
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.
# 5  
Old 06-02-2009
Quote:
Originally Posted by reborg
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
# 6  
Old 06-03-2009
Quote:
Originally Posted by pinnacle
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

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Replace space by tAB

My file looks like 3 33 210.01.10.0 2.1 1211 560 26 45 1298 98763451112 15412323499 INPUT OK 3 233 40.01.10.0 2.1 1451 780 54 99 1876 78787878784 15423210199 CANCEL OK Aim is to replace the spaces in each line by tab Used: sed -e 's/ */\t/g' But I get output like this... (3 Replies)
Discussion started by: sa@@
3 Replies

2. Shell Programming and Scripting

awk output is space delimeted not tab delimeted

In the below awk the output is space delimited, but it should be tab delimited. Did I not add the correct -F and OFS? Thank you :). The input file are rather large so I did not include them, but they are tab-delimeted files as well. awk awk -F'\t' -v OFS='\t' 'FNR==1 { next } > ... (2 Replies)
Discussion started by: cmccabe
2 Replies

3. Shell Programming and Scripting

How to remove tab space if any in a variable?

I have a variable sumOfJEOutputFile which is the output file of an SQL command which contains the output of that SQL. The output looks like below: ----------- 58 I am using following code to manipulate the output: (sed 1,2d $sumOfJEOutputFile > $newTemp1 | sed '$d' $newTemp1)... (4 Replies)
Discussion started by: Sharma331
4 Replies

4. UNIX for Dummies Questions & Answers

Changing only the first space to a tab in a space delimited text file

Hi, I have a space delimited text file but I only want to change the first space to a tab and keep the rest of the spaces intact. How do I go about doing that? Thanks! (3 Replies)
Discussion started by: evelibertine
3 Replies

5. Shell Programming and Scripting

how to keep tab from being converted to space

Hi, I want to read lines from a file, and I'm using two methods 1 use while read line do done<filename 2 use line=`sed -n '3p' filename` however, in both of them, I notice that the tab between fields are automatically converted to space because I want to use awk over the... (10 Replies)
Discussion started by: esolvepolito
10 Replies

6. Shell Programming and Scripting

Awk with Find and play using Space

Hi All, Sample records 2157 91128 -rw-r----- 1 arun1 staff 93315072 Aug 23 06:44 /home/arun/my own/file_name.txt 2157 91128 -rw-r----- 1 arun1 staff 93315072 Aug 23 06:44 /home/arun/myown/file name2.txt i want to print only user name, user group, size, date time stamp, and... (5 Replies)
Discussion started by: Arunprasad
5 Replies

7. UNIX for Dummies Questions & Answers

Delimiter: Tab or Space?

Hello, Is there a direct command to check if the delimiter in your file is a tab or a space? And how can they be converted from one to another. Thanks, G (4 Replies)
Discussion started by: Gussifinknottle
4 Replies

8. Shell Programming and Scripting

need help in tab space !

i have a commad that display the total each directory size in KB.Below the commad and o/p: ls -ltr | grep ^d | awk '{print $9}' | xargs du -sk output: what i want is the proper tab space b/w value and dir.? how to get that. thanks in advance (10 Replies)
Discussion started by: ali560045
10 Replies

9. Shell Programming and Scripting

How to echo a <tab> space?

I've tried this: echo "${bold}User${norm} : u"\t"${bold}All Users ${norm} : a\t" and i got this output: Specific User : u\tAll User: a\t (14 Replies)
Discussion started by: laila63
14 Replies

10. UNIX Desktop Questions & Answers

replace tab with space

How do I replace a tab with a space in scripts using sed/awk ? (1 Reply)
Discussion started by: avnerht
1 Replies
Login or Register to Ask a Question