Skip to content

Instantly share code, notes, and snippets.

@dajare
Last active December 31, 2023 18:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dajare/19a417d56b866314a076c16db3bca875 to your computer and use it in GitHub Desktop.
Save dajare/19a417d56b866314a076c16db3bca875 to your computer and use it in GitHub Desktop.
Bash script to titlecase chapter titles in UPPERCASE
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"
## Uncomment next line to echo new title line to terminal for checking
# sed -n '12p' "$filename"
done
@dajare
Copy link
Author

dajare commented Nov 27, 2023

COMMENTARY - This assumes:

  • the title is in line 12 of the file, in <p>...</p> delimiters
  • the title itself begins at "column" 8 (i.e., immediately after the opening <?> tag; h3 would begin at 9-)
  • it assumes *nix sed regex (tested on Ubuntu); might need adjusting for MacOS
  • convenient checking of results available by uncommenting line 5.

Test data can conveniently be found in this Github repo/commit (ZIP can be downloaded; contains 75 chapters with uppercase titles).


For "post semantics", then this variation "works": it identifiles the line with the epub:type="title" semantic, and does the titlecase replacement on that line:

for filename in chapter-*.xhtml; do
    tctitle=$(sed -n 's/.*title\">\(.*\)/\1/p' "$filename" | se titlecase -n)
    sed -i -e 's#^\(.*title\">\).*#'"\1$tctitle"'#g' "$filename"
  done

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment