input.csv -
"family_guy","Brian","b47f0a80-d848-4d81-a45b-7ba930e6048b","son"
"family_guy","Brian","b47f0a80-d848-4d81-a45b-7ba930e6048b","son"
"family_guy","Brian","0c160a66-0a16-48ac-99bf-ca3610ee5a8c","son"
"family_guy","Brian","9a219433-3e66-4a7d-b9e6-e25f127be003","son"
"Family_Guy","Peter","b47f0a80-d848-4d81-a45b-7ba930e6048b","self"
"Family_Guy","Peter","ff764eac-03de-4dcf-a7d6-349e3ce4656e","self"
"Family_Guy","Peter","065d43db-ed70-4ab0-aecc-c5ff88f2efc3","self"
"Family_Guy","Peter","065d43db-ed70-4ab0-aecc-c5ff88f2efc3","self"
"family_guy","Brian","9a219433-3e66-4a7d-b9e6-e25f127be003","son"
"family_guy","Brian","9a219433-3e66-4a7d-b9e6-e25f127be003","son"
"family_guy","Brian","25da2435-5270-4b2a-bce1-e1a16e982189","son"
"family_guy","Brian","25da2435-5270-4b2a-bce1-e1a16e982189","son"
"family_guy","Brian","25da2435-5270-4b2a-bce1-e1a16e982189","son"
"family_guy","Brian","d2bbf741-5d68-4ea0-8a78-9fa96f96fd20","son"
"family_guy","stewie","d2bbf741-5d68-4ea0-8a78-9fa96f96fd20","son"
"family_guy","Lois","d2bbf741-5d68-4ea0-8a78-9fa96f96fd20","wife"
"family_guy","Meg","d2bbf741-5d68-4ea0-8a78-9fa96f96fd20","daughter"
"family_guy","Lois","9a219433-3e66-4a7d-b9e6-e25f127be003","wife"
"family_guy","Lois","9a219433-3e66-4a7d-b9e6-e25f127be003","wife"
"family_guy","Lois","674387a3-877c-4107-ae7b-524c32ee8a09","wife"
"family_guy","Lois","25da2435-5270-4b2a-bce1-e1a16e982189","wife"
"family_guy","Lois","35b19677-3c43-424d-a52a-6cf46ae7018a","wife"
"family_guy","Meg","9a219433-3e66-4a7d-b9e6-e25f127be003","daughter"
"family_guy","Meg","9a219433-3e66-4a7d-b9e6-e25f127be003","daughter"
"family_guy","Brian","25da2435-5270-4b2a-bce1-e1a16e982189","son"
"family_guy","Meg","9a219433-3e66-4a7d-b9e6-e25f127be003","daughter"
"family_guy","bonnie","25da2435-5270-4b2a-bce1-e1a16e982189","neighbor"
"family_guy","bonnie","0ec6beb4-5864-42eb-9d3f-16213a67d4d9","neighbor"
"family_guy","bonnie","9708e5bd-41e5-4248-9b7f-7f1f3341f3e1","neighbor"
"family_guy","bonnie","9708e5bd-41e5-4248-9b7f-7f1f3341f3e1","neighbor"
"family_guy","chiken","9708e5bd-41e5-4248-9b7f-7f1f3341f3e1","neighbor"
"Family_Guy","Cleveland","d7c9ad94-cde1-45a4-b948-7366b51d673c","Funny1"
"Family_Guy","Cleveland","d7c82ef8-1a83-4065-a7a0-8e5a7e394486","Funny1"
"family_guy","Brian","56e3acf2-0ea2-413f-9eb5-2678b64c1591","Funny5"
"family_guy","Brian","4edcfdc8-6259-4de8-8500-5cb132814eec","Funny5"
"family_guy","Brian","4cbd733d-ff77-4203-aed9-5f6da129859e","Funny5"
"family_guy","Brian","4cbd733d-ff77-4203-aed9-5f6da129859e","Funny5"
"family_guy","Brian","4edcfdc8-6259-4de8-8500-5cb132814eec","Funny5"
"family_guy","Brian","4edcfdc8-6259-4de8-8500-5cb132814eec","Funny5"
Expected output. output.csv -
"family_guy","Brian","b47f0a80-d848-4d81-a45b-7ba930e6048b","son","NO","N/A"
"family_guy","Brian","b47f0a80-d848-4d81-a45b-7ba930e6048b","son","NO","N/A"
"family_guy","Brian","0c160a66-0a16-48ac-99bf-ca3610ee5a8c","son","YES","b47f0a80-d848-4d81-a45b-7ba930e6048b"
"family_guy","Brian","9a219433-3e66-4a7d-b9e6-e25f127be003","son","YES","b47f0a80-d848-4d81-a45b-7ba930e6048b"
"Family_Guy","Peter","b47f0a80-d848-4d81-a45b-7ba930e6048b","self","YES","065d43db-ed70-4ab0-aecc-c5ff88f2efc3"
"Family_Guy","Peter","ff764eac-03de-4dcf-a7d6-349e3ce4656e","self","YES","065d43db-ed70-4ab0-aecc-c5ff88f2efc3"
"Family_Guy","Peter","065d43db-ed70-4ab0-aecc-c5ff88f2efc3","self","NO","N/A"
"Family_Guy","Peter","065d43db-ed70-4ab0-aecc-c5ff88f2efc3","self","NO","N/A"
"family_guy","Brian","9a219433-3e66-4a7d-b9e6-e25f127be003","son","YES","25da2435-5270-4b2a-bce1-e1a16e982189"
"family_guy","Brian","9a219433-3e66-4a7d-b9e6-e25f127be003","son","YES","25da2435-5270-4b2a-bce1-e1a16e982189"
"family_guy","Brian","25da2435-5270-4b2a-bce1-e1a16e982189","son","NO","N/A"
"family_guy","Brian","25da2435-5270-4b2a-bce1-e1a16e982189","son","NO","N/A"
"family_guy","Brian","25da2435-5270-4b2a-bce1-e1a16e982189","son","NO","N/A"
"family_guy","Brian","d2bbf741-5d68-4ea0-8a78-9fa96f96fd20","son","NO","N/A"
"family_guy","stewie","d2bbf741-5d68-4ea0-8a78-9fa96f96fd20","son","NO","N/A"
"family_guy","Lois","d2bbf741-5d68-4ea0-8a78-9fa96f96fd20","wife","NO","N/A"
"family_guy","Meg","d2bbf741-5d68-4ea0-8a78-9fa96f96fd20","daughter","NO","N/A"
"family_guy","Lois","9a219433-3e66-4a7d-b9e6-e25f127be003","wife","NO","N/A"
"family_guy","Lois","9a219433-3e66-4a7d-b9e6-e25f127be003","wife","NO","N/A"
"family_guy","Lois","674387a3-877c-4107-ae7b-524c32ee8a09","wife","YES","9a219433-3e66-4a7d-b9e6-e25f127be003"
"family_guy","Lois","25da2435-5270-4b2a-bce1-e1a16e982189","wife","YES","9a219433-3e66-4a7d-b9e6-e25f127be003"
"family_guy","Lois","35b19677-3c43-424d-a52a-6cf46ae7018a","wife","YES","9a219433-3e66-4a7d-b9e6-e25f127be003"
"family_guy","Meg","9a219433-3e66-4a7d-b9e6-e25f127be003","daughter","NO","N/A"
"family_guy","Meg","9a219433-3e66-4a7d-b9e6-e25f127be003","daughter","NO","N/A"
"family_guy","Brian","25da2435-5270-4b2a-bce1-e1a16e982189","son","YES","9a219433-3e66-4a7d-b9e6-e25f127be003"
"family_guy","Meg","9a219433-3e66-4a7d-b9e6-e25f127be003","daughter","NO","N/A"
"family_guy","bonnie","25da2435-5270-4b2a-bce1-e1a16e982189","neighbor","YES","9708e5bd-41e5-4248-9b7f-7f1f3341f3e1"
"family_guy","bonnie","0ec6beb4-5864-42eb-9d3f-16213a67d4d9","neighbor","YES","9708e5bd-41e5-4248-9b7f-7f1f3341f3e1"
"family_guy","bonnie","9708e5bd-41e5-4248-9b7f-7f1f3341f3e1","neighbor","NO","N/A"
"family_guy","bonnie","9708e5bd-41e5-4248-9b7f-7f1f3341f3e1","neighbor","NO","N/A"
"family_guy","chiken","9708e5bd-41e5-4248-9b7f-7f1f3341f3e1","neighbor","NO","N/A"
"Family_Guy","Cleveland","d7c9ad94-cde1-45a4-b948-7366b51d673c","Funny1","NO","N/A"
"Family_Guy","Cleveland","d7c82ef8-1a83-4065-a7a0-8e5a7e394486","Funny1","NO","N/A"
"family_guy","Brian","56e3acf2-0ea2-413f-9eb5-2678b64c1591","Funny5","YES","4cbd733d-ff77-4203-aed9-5f6da129859e"
"family_guy","Brian","4edcfdc8-6259-4de8-8500-5cb132814eec","Funny5","YES","4cbd733d-ff77-4203-aed9-5f6da129859e"
"family_guy","Brian","4cbd733d-ff77-4203-aed9-5f6da129859e","Funny5","NO","N/A"
"family_guy","Brian","4cbd733d-ff77-4203-aed9-5f6da129859e","Funny5","NO","N/A"
"family_guy","Brian","4edcfdc8-6259-4de8-8500-5cb132814eec","Funny5","NO","N/A"
"family_guy","Brian","4edcfdc8-6259-4de8-8500-5cb132814eec","Funny5","NO","N/A"
In file input.csv
:
rows are grouped together based upon a specific criterion separated by a single blank line. Similar grouping is preferred in
output.csv
let's call the 3rd field value as XID
Each group can share XID
Fields are constant for each row/group
Decision to append YES/NO and N/A in a group is based upon each group plus value in 3rd field.
- "NO" to be appended in last field of a row of a group if that group has 3rd field value in majority (i.e. that is the value that appears most often in this specific group). And "N/A" in the field afterwards
- "YES" to be appended in last field of a row of a group if that group has 3rd field value in minority. And "XID" from majority group in the field afterwards
rows in groups can be as big as 100+ but number of fields are constant
Actual
input.csv
has 5K+ rows(including blank lines) and 27 fields
I've hit my limit to awk/shell coding. Any clue would help. Files exists on RHEL7.9 and solution would run in bash console.
YES,which_XID
?