我想打印匹配的用户的颜色,而不是所有的用户。所以我想找到bob和riley,只打印与他们相关的数据,而不打印其他用户的数据。如果没有匹配,我希望跳过整行,不显示任何内容
我怎样才能做到这一点?
awk '{ FS=":"; print $1 " " $4 }' /test|while read color person
do
if [[ `echo ${users}|egrep -i "bob|riley"` ]]
then
printf " ${color} - ${person}nn"
fi
done
使用FS,因为在文件中有4个由":"分隔的字段
输入看起来像这样:
red: :car:todd,riley,bob,greg
green: :jeep:todd,riley,bob,greg,thomas
black: :truck:jamie,jack,bob,travis,riley
输出目前:
red - todd,riley,bob,greg
green - todd,riley,bob,greg,thomas
black - jamie,jack,bob,travis,riley
所需输出red - bob,riley
green - bob,riley
black - bob,riley
不需要这样排序,但是这样会很有帮助
当您有GNU grep可用时,您可以使用选项-o
(——only-matching)
echo ${person} | egrep -o -i -e "bob|riley"
将显示第一行
riley
bob
现在您可以将结果与tr
echo ${person} | egrep -o -i -e "bob|riley" | tr 'n' ,
为
riley,bob,
最后去掉后面的逗号
echo ${person} | egrep -o -i -e "bob|riley" | tr 'n' , | sed -e 's/,$//'
结果是
riley,bob