Исправить небольшой баш скрипт.
Принцип - скрипт берет название файлов в папке, берет все предложения внутри этих файлов.
Делает новый файл (в строке столько предложений через ";" - сколько задано:
Имя-файла-1;Предложение1;Предложение2
Имя-файла-2;Предложение3;Предложение4
и т.п.
Результат же выходит такой:
acne-1;natural herbs acne
;plain water acne
;clear up bacne scars
;affirm laser acne
Т.е., надо что бы перенос был только перед названием нового файла:
acne-1;natural herbs acne;plain water acne;clear up bacne scars;affirm laser acne
acne-2;tips clearing acne scars;acne around mouth means;home cure for acne;home care for acne
--
#!/bin/bash
SRC_DIR=.
FILES_EXT=txt
DST_FILE=out.txt
FIELDS_DELIM=";"
CHUNK_SIZE=50
#====================================================
SCRIPT_NAME=`basename $0`
function help() {
cat
Script usage: $SCRIPT_NAME --src-dir=/scripts/key-imploder-chunk/1 --chunk-size=30
EOF
}
TEMP=`getopt -o h --longoptions help,src-dir:,max-lines: -n "$SCRIPT_NAME" -- "$@"`
if [ $? -ne 0 ]; then
echo 'Could not parse script arguments.'
exit 1
fi
eval set -- "$TEMP"
while true; do
case "$1" in
--src-dir) SRC_DIR=$2; shift 2 ;;
--chunk-size) CHUNK_SIZE=$2; shift 2 ;;
-h|--help) help ; exit 0 ;;
--) shift ; break ;;
*) echo "Unrecognized option: $1"
help
exit 1 ;;
esac;
done
#====================================================
if [ ! -d "$SRC_DIR" ]; then
echo "Directory ${SRC_DIR} does not exists"
exit 1
fi
rm -f $DST_FILE
start_time=`date +'%d.%m.%Y %H:%M:%S'`
start_time_seconds=`date +'%s'`
OLD_IFS="$IFS"
IFS=`echo -ne "\n"`
files_processed=0
while read f; do
f_name=`basename "$f" ".${FILES_EXT}"`
chunk_index=1
lines_processed=0
echo -n ${f_name}-${chunk_index} >> ${DST_FILE}
while read f_line; do
if [ $lines_processed -ge $CHUNK_SIZE ]; then
echo -ne "\n" >> ${DST_FILE}
let chunk_index++
lines_processed=0
echo -n ${f_name}-${chunk_index} >> ${DST_FILE}
fi
let lines_processed++
echo -ne "${FIELDS_DELIM}${f_line}" >> ${DST_FILE}
done
let files_processed++
echo -ne "\n" >> ${DST_FILE}
done /dev/null`
IFS="$OLD_IFS"
end_time=`date +'%d.%m.%Y %H:%M:%S'`
end_time_seconds=`date +'%s'`
echo Files processed: $files_processed
echo Start time: $start_time
echo End time: $end_time
echo Total $(($end_time_seconds - $start_time_seconds)) seconds