"Powerful" search tool

Thread Tools Search this Thread
Top Forums Shell Programming and Scripting "Powerful" search tool
# 1  
Old 07-28-2011
"Powerful" search tool

Hey guys I got this set of data in my text file.
What I want the user to do is to just enter any keyword in the search input which will enables him to find the specific letter.

file.txt contains.. Which splits into 5 fields.

Sample A - Apple:Sheryl:500:10:10
Test B - Oxy:Alan:250:99:2
Sample C - Car:Lee30:10:2

awk -F: -vOFS=", " -vt="$fieldA:$fieldB" '$0~t{$3="$"$3;print}' file.txt

I used the code above, however I can only type the exact name contain from the first and the second field.
I trying to make the search powerful like for example.
I type in fieldA: Sample Apple
The Sample A - Apple:Sheryl:500:10:10 will be displayed to the user. Issit possible to that?
# 2  
Old 07-28-2011
If you want to do it with one variable, try this out:

awk -F: -vOFS=", " -vt="$fieldA" '
BEGIN{n=split(t,words," ")}  #split fieldA into words
   if($0 !~ words[i])  #check if all words match the line
}' file.txt

It will match for multi-word string $fieldA anywhere in the line, using logical AND, e.i. all words must match the line:
$ fieldA="Sample"
$ awk -F: -vOFS=", " -vt="$fieldA" 'BEGIN{n=split(t,words," ")}{flag=1; for(i=1;i<=n;i++)if($0 !~ words[i]){flag=0}; if(flag){ $3="$"$3;print}}' file.txt
Sample A - Apple, Sheryl, $500, 10, 10
 Sample C - Car, Lee30, $10, 2

$ fieldA="Apple Sample"
$ awk -F: -vOFS=", " -vt="$fieldA" 'BEGIN{n=split(t,words," ")}{flag=1; for(i=1;i<=n;i++)if($0 !~ words[i]){flag=0}; if(flag){ $3="$"$3;print}}' file.txt
Sample A - Apple, Sheryl, $500, 10, 10

$ fieldA="Sample bs"
$ awk -F: -vOFS=", " -vt="$fieldA" 'BEGIN{n=split(t,words," ")}{flag=1; for(i=1;i<=n;i++)if($0 !~ words[i]){flag=0}; if(flag){ $3="$"$3;print}}' file.txt
(no output)

Of course it can also be done using grep, something like:
$(grep Sample  | grep Apple | awk -F: '{ $3="$"$3;print}' OFS=", ") < file.txt
Sample A - Apple, Sheryl, $500, 10, 10

Note, hwoever, that you can get into trouble, if your search string is a substring, e.g. fieldA="Sample" and you have a line
someSamplestuff or:Other:50:50:50

since this will match.

Last edited by mirni; 07-28-2011 at 07:09 PM.. Reason: substring warning
This User Gave Thanks to mirni For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. AIX

Apache 2.4 directory cannot display "Last modified" "Size" "Description"

Hi 2 all, i have had AIX 7.2 :/# /usr/IBMAHS/bin/apachectl -v Server version: Apache/2.4.12 (Unix) Server built: May 25 2015 04:58:27 :/#:/# /usr/IBMAHS/bin/apachectl -M Loaded Modules: core_module (static) so_module (static) http_module (static) mpm_worker_module (static) ... (3 Replies)
Discussion started by: penchev
3 Replies

2. Shell Programming and Scripting

Bash script - Print an ascii file using specific font "Latin Modern Mono 12" "regular" "9"

Hello. System : opensuse leap 42.3 I have a bash script that build a text file. I would like the last command doing : print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt where : print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies

3. UNIX for Dummies Questions & Answers

Using "mailx" command to read "to" and "cc" email addreses from input file

How to use "mailx" command to do e-mail reading the input file containing email address, where column 1 has name and column 2 containing “To” e-mail address and column 3 contains “cc” e-mail address to include with same email. Sample input file, email.txt Below is an sample code where... (2 Replies)
Discussion started by: asjaiswal
2 Replies

4. Shell Programming and Scripting

grep with "[" and "]" and "dot" within the search string

Hello. Following recommendations for one of my threads, this is working perfectly : #!/bin/bash CNT=$( grep -c -e "some text 1" -e "some text 2" -e "some text 3" "/tmp/log_file.txt" ) Now I need a grep success for some thing like : #!/bin/bash CNT=$( grep -c -e "some text_1... (4 Replies)
Discussion started by: jcdole
4 Replies

5. Shell Programming and Scripting

Completed "Command line google translation tool"

This tool for access translate.google.com from terminal and English dictionary. main mirror https://github.com/Anoncheg1/Command-line-translator mirror Google translate from command line and some more features - Pastebin.com requirements: bash, cURL, SpiderMonkey, forvo.com account for... (0 Replies)
Discussion started by: 654321
0 Replies

6. UNIX for Advanced & Expert Users

How to make "tab" key in mksnt tool kit case sensitive?

I am using MKS Toolkit on windows7, i observed that when i use "tab" key to complete a file/dir name converts into lower case. Eg: I am having a directory named "Dir1", note "D" is in caps. In unix if i had tried pressing "d" and "<tab>" resulted in no result. However in mksnt toolkit, it... (1 Reply)
Discussion started by: sarbjit
1 Replies

7. Shell Programming and Scripting

awk command to replace ";" with "|" and ""|" at diferent places in line of file

Hi, I have line in input file as below: 3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL My expected output for line in the file must be : "1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL" Can someone... (7 Replies)
Discussion started by: shis100
7 Replies

8. UNIX for Dummies Questions & Answers

Explain the line "mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'`"

Hi Friends, Can any of you explain me about the below line of code? mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'` Im not able to understand, what exactly it is doing :confused: Any help would be useful for me. Lokesha (4 Replies)
Discussion started by: Lokesha
4 Replies

9. Filesystems, Disks and Memory

Why i can't use the tool "turbosoundcfg" to configure the sound in my TurboLinux?

But the page "http://www.chinalinuxpub.com/doc/tlc61/node60.html" says it can.Why ?What can i do? Help me ! Thanks a lot! (3 Replies)
Discussion started by: sensir163
3 Replies
Login or Register to Ask a Question