所以我有这个问题需要使用grep命令。 所以我得到了52张13级和4种颜色的牌。
等级包括A,2,3,4,5,6,7,8,9,T(十),J,Q和K(国王)。四种颜色:c,d,h,s。
现在我有了13张牌的所有可能组合的文件(cards.txt)。 示例:8cKc6s4dKd8sQc4c2s6h9dTc4h
现在问题是输出包含4张相同等级的牌的所有组合。
β= {h∈H| h包含4张相同排名的卡片}。 示例:
Kd9dJs5sKs7c5c6cKcJhKhTh7h∈β
AdTdTc2d2cTsKh6c3c6s6dKc4h∉β
(问题是我知道如何使用grep命令来处理字符序列,但只有当它们彼此相邻时才会使用。帮助plz)
答案 0 :(得分:4)
我想你想要反向引用(见this link):
grep '\([A23456789TJQK]\).*\1.*\1.*\1' cards.txt
如果grep匹配A23456789TJQK
中的字符,那么,由于括号\(...\)
,grep会将其称为\1
(这是后引用)。
模式也可以写成如下:
grep '\([A23456789TJQK]\)\(.*\1\)\{3\}' cards.txt
答案 1 :(得分:0)
while read line
do
if echo $line | sed 's/\(.\)./\1\n/g' | sort | uniq -c | grep -q '^ *4'
then
echo $line
fi
done < cards.txt