Hi Marc,
here's a one-liner based on the classify method, which you may find to
be an interesting jumping-off-point, or centerpiece:
perl6 -e 'use JSON::Fast; my %foo =
lines()>>.trim-leading.classify(*.split(",").head(2)); say to-json %foo'
A,1,garbage .....
A,2,garbage .....
A,2,garbage .....
A,2,garbage .....
A,3,garbage .....
A,3,garbage .....
A,3,garbage .....
B,1,garbage .....
B,2,garbage .....
B,2,garbage .....
B,2,garbage .....
B,3,garbage .....
B,3,garbage .....
B,3,garbage .....
{
"A": {
"3": [
"A,3,garbage .....",
"A,3,garbage .....",
"A,3,garbage ....."
],
"1": [
"A,1,garbage ....."
],
"2": [
"A,2,garbage .....",
"A,2,garbage .....",
"A,2,garbage ....."
]
},
"B": {
"3": [
"B,3,garbage .....",
"B,3,garbage .....",
"B,3,garbage ....."
],
"1": [
"B,1,garbage ....."
],
"2": [
"B,2,garbage .....",
"B,2,garbage .....",
"B,2,garbage ....."
]
}
}
Things to note are: it makes hashes, so the order isn't retained. if
that's important, you could, for example, use/build a Hash that retains
its key insertion order and call .categorize-list on an instance of it.
Hope that helps, and Good Luck!
- Timo
On 22/11/2019 16:06, Marc Chantreux wrote:
> hello,
>
> On Fri, Nov 22, 2019 at 03:07:28PM +0100, Patrick Spek via perl6-users wrote:
>> Could you post some input and expected output? That would make it
>> easier for me (and perhaps others) to see what exactly you're trying to
>> accomplish, in practical terms.
> sorry ... i'm so confortable with awk i haven't though about some are
> not. i sincerely apologize.
>
> Basically i want to figure out what are the sections, subsections of of
> a CSV file:
>
> A,1,garbage .....
> A,2,garbage .....
> A,2,garbage .....
> A,2,garbage .....
> A,3,garbage .....
> A,3,garbage .....
> A,3,garbage .....
> B,1,garbage .....
> B,2,garbage .....
> B,2,garbage .....
> B,2,garbage .....
> B,3,garbage .....
> B,3,garbage .....
> B,3,garbage .....
>
> becomes
>
> A
> 1
> 2
> 3
> B
> 1
> 2
> 3
>
> regards,
> marc