Bash - While read line from file print first and s

2019-08-26 00:47发布

问题:

I have a test file like below. (but the actual file has 1000+ lines and many columns)

apple,2
mango,5
coconut,10

I want to print this file as below.

I have apple and the count is 2
I have mango and the count is 5
I have coconut and the count is 10

I tried while read line with awk -F ',' '{print $1}', but im not getting the actual output. Can someone help me on this?

回答1:

You can use awk like this:

awk -F, '{print "I have", $1, "and the count is", $2}' file

I have apple and the count is 2
I have mango and the count is 5
I have coconut and the count is 10

Though awk is recommended but if you are looking for a bash loop then use:

while IFS=, read -r f c; do
    echo "I have $f and the count is $c"
done < file


回答2:

Here is one in sed. Replace the beginning of each line and the comma with related strings:

$ sed 's/^/I have /;s/,/ and the count is /' file
I have apple and the count is 2
I have mango and the count is 5
I have coconut and the count is 10


回答3:

If it's a small file, you can use read to split the line.

while IFS=, read fruit count; do
  echo "I have $fruit and the count is $count"
done < file.txt

For larger files, it is inefficient to iterate using bash, and something like awk to read the entire file would be more appropriate.