我只想显示在逗号之前匹配的用户



我想打印匹配的用户的颜色,而不是所有的用户。所以我想找到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

相关内容

最新更新