Post History
Both replies, at different points, provided the basis for this working script. Assuming that the 12th line of file has something like: <p>HERE IS MY TITLE</p> where HERE... begi...
#2: Post edited
- Both replies, at different points, provided the basis for this working script. Assuming that the 12th line of file has something like:
- ```
- <p>HERE IS MY TITLE</p>
- ```
- where `HERE...` begins at column 8 (I need to omit the opening `<p>` tag, as noted in the original post), then:
- ```
- for filename in chapter-*.xhtml; do
- new12=$(sed -n '12p' "$filename" | cut -b 8- | se titlecase -n)
- sed -i -e '12s#^\(.*<p>\).*#'"\1$new12"'#g' "$filename"
- done
- ```
- The two middle lines work this way:
- **Line 2**:
- - `sed -n '12p' "$filename"` = print the 12th line of the file
- `cut -b 8-` = "[cut](https://www.man7.org/linux/man-pages/man1/cut.1.html)" from the 8th column- - `se titlecase -n` = run the `titlecase` script (`-n` prevents it from generating a "newline")
- - all that assigned to `$new12`.
- **Line 3**
- - `sed -i -e '12s#^\(.*<p>\).*#'"\1$new12"'#g'` = replace original line 12, capturing the first part of the line, up to the opening `<p>` in a backreference group, so `\1` in the "replace", combined with the `$new12` value.
- Produces:
- ```
- <p>Here Is My Title</p>
- ```
- in `"$filename"`. Done. :)
- Both replies, at different points, provided the basis for this working script. Assuming that the 12th line of file has something like:
- ```
- <p>HERE IS MY TITLE</p>
- ```
- where `HERE...` begins at column 8 (I need to omit the opening `<p>` tag, as noted in the original post), then:
- ```
- for filename in chapter-*.xhtml; do
- new12=$(sed -n '12p' "$filename" | cut -b 8- | se titlecase -n)
- sed -i -e '12s#^\(.*<p>\).*#'"\1$new12"'#g' "$filename"
- done
- ```
- The two middle lines work this way:
- **Line 2**:
- - `sed -n '12p' "$filename"` = print the 12th line of the file
- - `cut -b 8-` = "[cut](https://www.man7.org/linux/man-pages/man1/cut.1.html)" from the 8th column, so in this example, passing the string `HERE IS MY TITLE</p>` to the pipe
- - `se titlecase -n` = run the `titlecase` script (`-n` prevents it from generating a "newline")
- - all that assigned to `$new12`.
- **Line 3**
- - `sed -i -e '12s#^\(.*<p>\).*#'"\1$new12"'#g'` = replace original line 12, capturing the first part of the line, up to the opening `<p>` in a backreference group, so `\1` in the "replace", combined with the `$new12` value.
- Produces:
- ```
- <p>Here Is My Title</p>
- ```
- in `"$filename"`. Done. :)
#1: Initial revision
Both replies, at different points, provided the basis for this working script. Assuming that the 12th line of file has something like:
```
<p>HERE IS MY TITLE</p>
```
where `HERE...` begins at column 8 (I need to omit the opening `<p>` tag, as noted in the original post), then:
```
for filename in chapter-*.xhtml; do
new12=$(sed -n '12p' "$filename" | cut -b 8- | se titlecase -n)
sed -i -e '12s#^\(.*<p>\).*#'"\1$new12"'#g' "$filename"
done
```
The two middle lines work this way:
**Line 2**:
- `sed -n '12p' "$filename"` = print the 12th line of the file
- `cut -b 8-` = "[cut](https://www.man7.org/linux/man-pages/man1/cut.1.html)" from the 8th column
- `se titlecase -n` = run the `titlecase` script (`-n` prevents it from generating a "newline")
- all that assigned to `$new12`.
**Line 3**
- `sed -i -e '12s#^\(.*<p>\).*#'"\1$new12"'#g'` = replace original line 12, capturing the first part of the line, up to the opening `<p>` in a backreference group, so `\1` in the "replace", combined with the `$new12` value.
Produces:
```
<p>Here Is My Title</p>
```
in `"$filename"`. Done. :)
