* Replacing spaces with newlines From https://database.lichess.org/#puzzles : #+BEGIN_QUOTE % cat lichess_db_puzzle.csv| head PuzzleId,FEN,Moves,Rating,RatingDeviation,Popularity,NbPlays,Themes,GameUrl,OpeningTags 00008,r6k/pp2r2p/4Rp1Q/3p4/8/1N1P2R1/PqP2bPP/7K b - - 0 24,f2g3 e6e7 b2b1 b3c1 b1c1 h6c1,1900,76,95,8222,crushing hangingPiece long middlegame,https://lichess.org/787zsVup/black#48, 0000D,5rk1/1p3ppp/pq3b2/8/8/1P1Q1N2/P4PPP/3R2K1 w - - 2 27,d3d6 f8d8 d6d8 f6d8,1442,74,96,33118,advantage endgame short,https://lichess.org/F8M8OS71#53, 0008Q,8/4R3/1p2P3/p4r2/P6p/1P3Pk1/4K3/8 w - - 1 64,e7f7 f5e5 e2f1 e5e6,1358,76,91,719,advantage endgame rookEndgame short,https://lichess.org/MQSyb3KW#127, 0009B,r2qr1k1/b1p2ppp/pp4n1/P1P1p3/4P1n1/B2P2Pb/3NBP1P/RN1QR1K1 b - - 1 16,b6c5 e2g4 h3g4 d1g4,1136,74,88,594,advantage middlegame short,https://lichess.org/4MWQCxQ6/black#32,Kings_Pawn_Game Kings_Pawn_Game_Leonardis_Variation ... % cat lichess_db_puzzle.csv| cut -d ',' -f8 | head Themes crushing hangingPiece long middlegame advantage endgame short advantage endgame rookEndgame short advantage middlegame short crushing endgame long crushing endgame long pawnEndgame ... % cat lichess_db_puzzle.csv| cut -d ',' -f8 | tr ' ' '\n' | head Themes crushing hangingPiece long middlegame advantage endgame short advantage endgame ... % cat lichess_db_puzzle.csv| cut -d ',' -f8 | tr ' ' '\n' | sort | uniq -c 315530 advancedPawn 1512381 advantage 6001 anastasiaMate 5915 arabianMate 36398 attackingF2F7 185468 attraction ... 1546267 mate 695790 mateIn1 661310 mateIn2 160803 mateIn3 23334 mateIn4 5030 mateIn5 ... #+END_QUOTE