Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

Принцип - скрипт берет название файлов в папке, берет все предложения внутри этих файлов.

Делает новый файл (в строке столько предложений через ";" - сколько задано:

Имя-файла-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

10 лет назад
Art-Media
Андрей 
37 летРоссия
19 лет в сервисе
Был
10 месяцев назад
Выбранный исполнитель
chft
37 летРоссия
16 лет в сервисе
Был
3 года назад
10 лет назад
$10
1 день
Отличное исполнение! Рекоммендую.
Отличный заказчик, рекомендую.