You cannot set empty NBT tag nor set something to zero count.
Make it another way - Sell two items and let him give you back the one of it - "renewable token".
So you will sell "anything" + "item you want to sell" , and get "anything" back. Yup, you just lost that thing you wanted to get rid of.
/summon Villager ~ ~1 ~ {Silent:1,NoAI:1,Offers:{Recipes:[{maxUses:7,buy:{id:"minecraft:flint",Count:1},buyb:{id:"minecraft:stone",Count:1},sell:{id:"minecraft:stone",Count:1}}]}}
PS: buyb is the second buy tag, as I remember, cannot check now from work :)
You cannot insert NBT data directly into a selector. You must use a valid selector argument, of which there is none for a villager profession (you can find a list of valid arguments here). Selectors must also not contain spaces.
In order to target based on NBT data, you must use the /scoreboard
command to assign a label to the target first:
/scoreboard players tag @e[type=villager,tag=!profession5] add profession5 {Profession:5}
And then you can target the villager with the particular label:
/effect @e[type=villager,tag=profession5] minecraft:speed
Alternatively, you can use a score instead of a tag label:
/scoreboard objectives add Profession dummy
And the value of the score would represent the profession:
/scoreboard players set @e[type=villager] Profession 5 {Profession:5}
This allows you to easily target a range of professions at the same time, unlike tag labels:
/effect @e[type=villager,score_Profession_min=5,score_Profession=5] minecraft:speed
Best Answer
After digging in the wiki, and learning how commands works, the command format has changed in 1.14. Now you have to input:
Professions (their names) are listed here: https://minecraft.gamepedia.com/Villager