How to search for a word in column header that fully matches the word not partially in awk?


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers How to search for a word in column header that fully matches the word not partially in awk?
# 1  
Old 08-01-2019
How to search for a word in column header that fully matches the word not partially in awk?

I have a multicolumn text file with header in the first row like this

Quote:
Name xy_fill zxy_fill tz_fill
Fox 0 5 55
Snake 1 6 14
wolf 8 1 2
The headers are stored in an array called
Quote:
hdr
. which contains
Quote:
xy_fill tz_fill
I want to search for each elements of this
Quote:
hdr
array from that multicolumn text file. And I am using this awk approach

Code:
for ii in ${hdr[@]}
do

gawk -vcol="$ii" -F $'\t' ' 
$0 ~ col{
for(s=1;s<=NF;s++){ 
heading=$s 
colhdr[s]=heading
if(index(heading, col))wanted[s]=1
}
}
'

done

But this gives me both
Quote:
xy_fill
and
Quote:
zxy_fill
columns while searching for
Quote:
xy_fill
. How can I only read
Quote:
xy_fill
column?
For example if I search
Quote:
xy_fill
it should return column number 1 but my script is returning 1 and 2, which is wrong.

Last edited by Atta; 08-01-2019 at 06:07 AM..
# 2  
Old 08-01-2019
Not sure where to begin... - OK, let's try:


You're missing the multicolumn text file as an input to awk, so it doesn't know what to operate on.
Your awk code doesn't have a print statement, so nothing will be printed. So your result of 1 or 2 is a bit surprising. If it printed something, then the (desired) result for the given contents of hdr array should be 2 and 4, for the two elements as indicated.
Your pattern check $0 ~ col is quite unspecific, it will trigger on any occurrence of the pattern also later in the file - you may want to confine the action to the first line only.
It's not clear what the heading, colhdr, and wanted variables / arrays are meant for, as they aren't used anywhere.
You want a "word in column header that fully matches the word not partially", so why use the index function in lieu of an equals operator?


How far wqould this get you:
Code:
for ii in ${hdr[@]}
  do    awk -vcol="$ii" ' 
        NR == 1 {for (s=1; s<=NF; s++)  if ($s == col) print s
                }
        ' file
  done
2
4

This User Gave Thanks to RudiC For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Search for a specific word and print only the word from the input file

Hi, I have a sample file as shown below, I am looking for sed or any command which prints the complete word only from the input file. Ex: $ cat "sample.log" I am searching for a word which is present in this file We can do a pattern search using grep but I need to cut only the word which... (1 Reply)
Discussion started by: mohan_kumarcs
1 Replies

2. Shell Programming and Scripting

Shell Script @ Find a key word and If the key word matches then replace next 7 lines only

Hi All, I have a XML file which is looks like as below. <<please see the attachment >> <?xml version="1.0" encoding="UTF-8"?> <esites> <esite> <name>XXX.com</name> <storeId>10001</storeId> <module> ... (4 Replies)
Discussion started by: Rajeev_hbk
4 Replies

3. UNIX for Dummies Questions & Answers

Search word in 3rd column and move it to next column (4th)

Hi, I have a file with +/- 13000 lines and 4 column. I need to search the 3rd column for a word that begins with "SAP-" and move/skip it to the next column (4th). Because the 3rd column need to stay empty. Thanks in advance.:) 89653 36891 OTR-60 SAP-2 89653 36892 OTR-10 SAP-2... (2 Replies)
Discussion started by: AK47
2 Replies

4. Shell Programming and Scripting

Search for the word and exporting 35 characters after that word using shell script

I have a file input.txt which have loads of weird characters, html tags and useful materials. I want to display 35 characters after the word "description" excluding weird characters like $&lmp and without html tags in the new file output.txt. Help me. Thanx in advance. I have attached the input... (4 Replies)
Discussion started by: sachit adhikari
4 Replies

5. Shell Programming and Scripting

Search for the word and exporting 35 characters after that word using shell script?

I have a file input.txt which have loads of weird characters, html tags and useful materials. I want to display 35 characters after the word description excluding weird characters like $$#$#@$#@***$# and without html tags in the new file output.txt. Help me. Thanx in advance. My final goal is to... (11 Replies)
Discussion started by: sachit adhikari
11 Replies

6. Shell Programming and Scripting

To search a word in particular column using awk

I have a data in a file like this 1 praveen bmscollege 2 shishira bnmit 3 parthiva geethamce I want to search "praveen" using awk command i tried like this but i did not get awk `$2="praveen" {print $0} ` praveen.lst can anyone help me solving this problem in... (2 Replies)
Discussion started by: praveenhegde
2 Replies

7. UNIX for Dummies Questions & Answers

Script to search for a particular word in files and print the word and path name

Hi, i am new to unix shell scripting and i need a script which would search for a particular word in all the files present in a directory. The output should have the word and file path name. For example: "word" "path name". Thanks for the reply in adv,:) (3 Replies)
Discussion started by: virtual_45
3 Replies

8. Shell Programming and Scripting

Search the word to be deleted and delete lines above this word starting from P1 to P3

Hi, I have to search a word in a text file and then I have to delete lines above from the word searched . For eg suppose the file is like this: Records P1 10,23423432 ,77:1 ,234:2 P2 10,9089004 ,77:1 ,234:2 ,87:123 ,9898:2 P3 456456 P1 :123,456456546 P2 abc:324234 (2 Replies)
Discussion started by: vsachan
2 Replies

9. Shell Programming and Scripting

How to search for a word in a particular column of a file

How to search for a word like "computer" in a column (eg: 4th field) of a '***' delimited file and add a column at the end of the record which denotes 'Y' if present and 'N' if not. After this, we need to again check for words like 'Dell' but not 'DellXPS' in 5th field and again add another column... (5 Replies)
Discussion started by: Jassz
5 Replies

10. Shell Programming and Scripting

Print word 1 in line 1 and word 2 in line 2 if it matches a pattern

i have a file in this pattern MATCH1 word1 IMAGE word3 word4 MATCH2 word1 word2 word3 word4 MATCH2 word1 word2 word3 word4 MATCH2 word1 word2 word3 word4 MATCH2 word1 word2 word3 word4 MATCH1 word1 IMAGE word3 word4 MATCH2 word1 word2 word3 word4 MATCH2 word1 word2 word3 word4 MATCH2 word1... (7 Replies)
Discussion started by: bangaram
7 Replies
Login or Register to Ask a Question