Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

225
Views
Using awk to retrieve a specific set of strings from a file

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
over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

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
over 4 years ago · Santiago Trujillo Report

0

If you wish to format string by inserting certain values inside it you might find useful printf Statement, consider following example, let file.txt content be

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

then

awk 'BEGIN{FS=":"}/mango/{printf "Shape %s\nColor %s\nQuantity %s\n",$2,$3,$4}' file.txt

output

Shape oval
Color yellow
Quantity 18pcs

Explanation: I inform GNU AWK that field separator is : (read 8 Powerful Awk Built-in Variables – FS, OFS, RS, ORS, NR, NF, FILENAME, FNR if you want to know more) then for line containg mango I printf string, %s are replace with values of columns: 2nd ($2) 3rd ($3) 4th ($4), \n denotes newline, so this printf does output multiline string. Note trailing newline, as by default printf does not include it at end.

(tested in gawk 4.2.1)

over 4 years ago · Santiago Trujillo Report

0

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
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!