用逗号分隔的grep打印行号

时间:2014-06-17 16:15:12

标签: bash shell grep cut

我使用grep从发生特定字符串的文件中获取行号。如果我希望这些行号出现在行上而不是垂直排成一行,该怎么办?

cFont=$(grep -icE "<font *" $htmlFile)
if [ $cFont -gt 0 ] ; then
  echo "There are $cFont line(s) with <font> tag, they are: " >> ~/Desktop/errors.txt
  grep -inE "<font *" $htmlFile |cut -f1 -d: >> ~/Desktop/errors.txt
fi

输出是

There are 4 line(s) with <font> tag, they are: 
14
43
46
72

我希望它是

There are 4 line(s) with <font> tag, they are: 
14, 43, 46, 72

2 个答案:

答案 0 :(得分:4)

使用:

grep -inE "<font *" $htmlFile |cut -f1 -d:| tr '\n' ','|sed -e "s/,$//" >> ~/Desktop/errors.tr

答案 1 :(得分:2)

您可以使用awk:

而不是cut -f1 -d:
awk -F: '{printf "%s, ", $1} END {print ""}'