mirror of https://github.com/tLDP/LDP
67 lines
1.4 KiB
Bash
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.
|