BASH: How do I grep on a variable? (or simmilar question that makes sense)

Hi, I've been running code which very frequently calls books.csv. e.g:

grep -i horror books.csv > temp

Except, I'm trying to move away from using temporary files or frequently calling books.csv to improve efficiency. So I tried something like

bookfile=$(cat books.csv)
grep -i horror $bookfile

Needless to say, it explodes (giving me about 40 lines of: "grep [data here] no such file or directory"), that's before I even try and save my grep output as a variable. Don't suppose anyone knows what path I need to be taking? Thanks in advance

Set your variable as follows:
bookfile=`cat books.csv`

Then your grep should get every line that has the word "horror" in it. If you want specific fields from each line, you'll need to do something similar to:

bookname=`echo $bookfile | awk -F"," '{print $1}'`

This assumes the fields are separated by commas (true csv format) and that the first field is the bookname.

printf "%s\n" "$bookfile" | grep -i horror

Ahh thanks, but I'm pretty sure I'm supposed to be doing this without the awk function.

Thank you loads!!