Home > Back-end >  Using awk to retrieve a specific set of strings from a file
Using awk to retrieve a specific set of strings from a file

Time:03-24

textFileA consists of:

mango:oval:yellow:18pcs
apple:irregular:red:12pcs
orange:round:orange:4pcs

I wanted to do something like allowing user input for example user search "mango" I want the system to print out

Please enter the fruit name : mango >> this is user input

Desire Output

Fruit Shape : Oval
Fruit Color : Yellow
Fruit Quantity : 18pcs

So far this is what i done and it could only print out the entire line of strings, did i do something wrong here?

echo -n "Please enter the fruit name :"
read fruitName
awk '/'$fruitName'/ {print}'  textFileA

Current Output

mango:oval:yellow:18pcs

CodePudding user response:

You may use it like this:

read -p "Please enter the fruit name: " fruitName
awk -F: -v fruitName="$fruitName" '
$1 == fruitName {
   print "Fruit Shape :", $2
   print "Fruit Color :", $3
   print "Fruit Quantity :", $4
}' file

Output:

Please enter the fruit name: mango
Fruit Shape : oval
Fruit Color : yellow
Fruit Quantity : 18pcs

CodePudding user response:

Using awk

$ awk -F: 'BEGIN {printf "Please enter fruit name: "; getline fruit < "-"} $1==fruit {print "Fruit Shape: " $2 "\nFruit Color: " $3 "\nFruit Quantity: " $4}' input_file
Please enter fruit name: mango
Fruit Shape: oval
Fruit Color: yellow
Fruit Quantity: 18pcs
$ cat file.awk
BEGIN {
    printf "Please enter fruit name: "; getline fruit < "-"
} $1==fruit {
    print "Fruit Shape: " $2 "\nFruit Color: " $3 "\nFruit Quantity: " $4
}
$ awk -F: -f file.awk input_file
Please enter fruit name: mango
Fruit Shape: oval
Fruit Color: yellow
Fruit Quantity: 18pcs
  • Related