I have a source file that is a combination of multiple files that have been merged together. My script is supposed to separate them into the original individual files.
Whenever I encounter a line that starts with "FILENM", that means that it's the start of the next file.
All of the detail lines in the files are fixed width; so, I'm currently encountering a problem where a line that starts with leading whitespaces is truncated when it's not supposed to be truncated.
How do I enhance this script to retain the leading whitespaces?
while read line
do
lineType=`echo $line | cut -c1-6`
if [ "$lineType" == "FILENM" ]; then
fileName=`echo $line | cut -c7-`
else
echo "$line" >> $filePath/$fileName
fi
done <$filePath/sourcefile
To preserve
IFS
variable you could writewhile
in the following way:Also to preserve backslashes use
read -r
option.The leading spaces are removed because
read
splits the input into words. To counter this, set theIFS
variable to empty string. Like this: