Я думаю, что предыдущий ответ является лучшим, я просто показываю другой подход, поскольку я не использовал awk годами, с тех пор как perl и python стали популярными. Я думаю, что с awk все в порядке, просто смесь shell, sed, python и / или perl лучше подходит для моей работы.
Однако в этом случае, я думаю, любой может видеть, что решение awk более сжато и легче читается. Если подумать, я думаю, что слышал, как awk называют электронной таблицей командной строки или что-то в этом роде. : -)
Основываясь на исходном посте, я решил позволить команде ls сортировать имена файлов по времени модификации файлов, а не полагаться на формат имени файла. Шесть из одного, полдюжины из другого.
Для сравнения, вот эффективная, портативная, модульная (?!) версия решения на чистой оболочке:
#!/bin/sh
get_commas() {
sed 's/[^,]//g; 1q' "$@"
}
get_extra_commas() {
local maxcommas="$1"
local file="$2"
local new_commas=$(get_commas "$file")
local extra_commas=""
while [ "${new_commas}${extra_commas}" != "${maxcommas}" ]
do
extra_commas=",$extra_commas"
done
echo "$extra_commas"
}
unset header
ls -t Apex*.csv |
while read filename
do
if [ -z "$header" ]
then
header="$(sed 1q "$filename")"
commas=$(echo "$header" | get_commas)
echo "$header"
fi
extra_commas=$(get_extra_commas $commas "$filename")
sed "1d; s/\$/$extra_commas/" "$filename"
done
Попробуйте войти в режим восстановления:
Если это загрузится, вы можете опубликовать журналы, и мы сможем выяснить, что происходит. Если это тоже не загружается, вы все равно можете получить там больше вывода, что должно помочь нам отладить то, что происходит.