I feel like this would be easier with a script of some sort. Nevertheless the
idea I had was to do the following.
First, use Shift Right to push all the data in two tab stops. And make sure
there's an empty line at the start and end of the file.
ART 215-2D Art II, Honors
First Level Requests
Kite, Kevin 11
Lizard, Larry 12
Mongoose, Marvin 11
Then use a couple search/replaces to pull the ART and First/Alternate lines
forward and fix the data to what you want at the end.
Find: ^\t\t([A-Z]+ [0-9]+).*$
Replace: \1
Find: \t\tFirst Level Requests
Replace: \tFirst
Find: \t\tAlternate Request
Replace: \tAlternate
Now, the data looks like this:
ART 200
Alternate
Dove, David 11
Fox, Fred 11
Gill, Gertrude 10
Collapse the first three rows in each group with this search replace. Make sure
you start at the top of the file and only run it once.
Find: \r(.+?)\r\t(.+?)\r\t\t(.+?)\r
Replace: \r\1\t\2\t\3\r
ART 215 First Kite, Kevin 11
Lizard, Larry 12
Mongoose, Marvin 11
And then fill the data down into the remaining rows by running this replacement
several times.
Find: \r(.+?)\t(.+?)\t(.+?)\t(.+?)\r\t\t(.+?)\t(.+?)\r
Replace: \r\1\t\2\t\3\t\4\r\1\t\2\t\5\t\6\r
ART 200 First Aardvark, Amy 10
ART 200 First Badger, Billy 11
ART 200 First Cat, Carl 12
Remove Blank Lines and the data should be importable.
[fletcher]
> On Mar 22, 2023, at 8:40 AM, Doug Pinkerton <[email protected]> wrote:
>
> I need to convert data formatted for humans into data formatted for a
> database. The actual document is subject to privacy regulation. The following
> is a mockup to illustrate the task. I need to convert this:
>
> ART 200-2D Art I
> First Level Requests
> Aardvark, Amy 10
> Badger, Billy 11
> Cat, Carl 12
>
> ART 200-2D Art I
> Alternate Request
> Dove, David 11
> Fox, Fred 11
> Gill, Gertrude 10
>
> ART 215-2D Art II, Honors
> First Level Requests
> Kite, Kevin 11
> Lizard, Larry 12
> Mongoose, Marvin 11
>
> into this:
>
> ART 200 First Aardvark, Amy 10
> ART 200 First Badger, Billy 11
> ART 200 First Cat, Carl 12
> ART 200 Alternate Dove, David 11
> ART 200 Alternate Fox, Fred 11
> ART 200 Alternate Gill, Gertrude 10
> ART 215 First Kite, Kevin 11
> ART 215 First Lizard, Larry 12
> ART 215 First Mongoose, Marvin 11
>
> So, I need to capture the course ID from one line, the request type from the
> next line, and then insert each of those into the beginning of each
> subsequent line, until the occurrence of a new course ID, at which point the
> course ID and request type are updated for insertion into the next block of
> lines...
> ... and so on for about 3,000 lines.
>
> My grep skills are not up to the challenge. Can anyone help?
>
> Thanks,
> dp
>
> --
> This is the BBEdit Talk public discussion group. If you have a feature
> request or need technical support, please email "[email protected]"
> rather than posting here. Follow @bbedit on Twitter:
> <https://twitter.com/bbedit>
> ---
> You received this message because you are subscribed to the Google Groups
> "BBEdit Talk" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected]
> <mailto:[email protected]>.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/bbedit/446f907e-e61f-45c4-946a-261fafa0fa7an%40googlegroups.com
>
> <https://groups.google.com/d/msgid/bbedit/446f907e-e61f-45c4-946a-261fafa0fa7an%40googlegroups.com?utm_medium=email&utm_source=footer>.
--
This is the BBEdit Talk public discussion group. If you have a feature request
or need technical support, please email "[email protected]" rather than
posting here. Follow @bbedit on Twitter: <https://twitter.com/bbedit>
---
You received this message because you are subscribed to the Google Groups
"BBEdit Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/bbedit/F8986EC6-468D-4554-B07C-159362F9D2AC%40cumuli.com.