С awk:
awk -F'\t' -v OFS='\t' '
NR == 1 {for (i=1; i<=NF; i++) if ($i == "REF") refCol = i}
refCol {for (i = refCol + 1; i <=NF; i++) $(i-1) = $i; NF--}
1
' file.csv
Первая строка определяет, какой столбец является столбцом REF. Переменная refCol будет деинициализирована, если такого столбца нет.
Вторая строка удаляет столбец, если он был найден.
Третья строка выводит запись.
Пакет
tar --create --format=posix --preserve-permissions --same-owner --directory $BASE/$name --to-stdout. |
parallel --pipe --recend '' --keep-order --block-size 128M "xz -9 --check=sha256 | gpg --encrypt --recipient $RECIPIENT;echo bLoCk EnD" |
pv > $TARGET/$FILENAME
Распаковать
cat $TARGET/$FILENAME |
parallel --pipe --recend 'bLoCk EnD\n' -N1 --keep-order --rrs 'gpg --decrypt | xz -d' |
tar tv
-N1
необходим, чтобы убедиться, что мы передаем по одной записи за раз. GnuPG не поддерживает расшифровку нескольких объединенных записей.
Спасибо за ваши предложения, Оле. Дальнейшее расследование показало, что узким местом является отложенная загрузка Amazon с S3. Мы прикрепили том ebs из моментального снимка. Это все еще медленно, нам удалось ускорить его с помощью fio.
echo "Инициализация файла начинается сейчас:date
" FILES=$ (ls -d /mnt/database/files/database _*)эхо $ ФАЙЛЫ
для f в $FILES делать echo "Чтение файла $f" #Это останавливает любой вывод и позволяет продолжить процесс. sudo fio --opendir="$f" --rw=read --bs=128k --iodepth=32 --ioengine=libaio --direct=1 --name="$f" --openfiles=1000 >/dev/null 2>&1 &
выполнено