LDP/LDP/guide/docbook/abs-guide/find-splitpara.sh

67 lines
1.4 KiB
Bash

#!/bin/bash
# find-splitpara.sh
# Finds split paragraphs in a text file,
#+ and tags the line numbers.
ARGCOUNT=1 # Expect one arg.
OFF=0 # Flag states.
ON=1
E_WRONGARGS=85
file="$1" # Target filename.
lineno=1 # Line number. Start at 1.
Flag=$OFF # Blank line flag.
if [ $# -ne "$ARGCOUNT" ]
then
echo "Usage: `basename $0` FILENAME"
exit $E_WRONGARGS
fi
file_read () # Scan file for pattern, then print line.
{
while read line
do
if [[ "$line" =~ ^[a-z] && $Flag -eq $ON ]]
then # Line begins with lowercase character, following blank line.
echo -n "$lineno:: "
echo "$line"
fi
if [[ "$line" =~ ^$ ]]
then # If blank line,
Flag=$ON #+ set flag.
else
Flag=$OFF
fi
((lineno++))
done
} < $file # Redirect file into function's stdin.
file_read
exit $?
# ----------------------------------------------------------------
This is line one of an example paragraph, bla, bla, bla.
This is line two, and line three should follow on next line, but
there is a blank line separating the two parts of the paragraph.
# ----------------------------------------------------------------
Running this script on a file containing the above paragraph
yields:
4:: there is a blank line separating the two parts of the paragraph.
There will be additional output for all the other split paragraphs
in the target file.