Bash - While read line from file print first and second column [closed]

瘦欲@ 提交于 2019-12-13 03:54:16

问题


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.



来源:https://stackoverflow.com/questions/51741463/bash-while-read-line-from-file-print-first-and-second-column

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!