Как узнать, на какой строке мой файл данных дает сбой при передаче команде?

Чтобы упростить решение, а также из-за того, что ваши строки заголовка не согласованы (новая строка во входном файле и неправильный разделитель ~в выходном файле ), давайте предположим, что ваш входной файл не содержит строки заголовка.

Можно решить задачу в два шага:

  1. Создайте файл checksums.csv, нам нужен только путь к файлу:

    awk -F'~' '{ system("cksum /opt/xyz"substr($2,8)) }' file.csv > checksums.csv
    

    substr($2,8)удаляет префикс store:/, а /opt/xyzдобавляется для завершения пути. Команда system(…)выполняет команду cksumпо заданному пути, и вывод перенаправляется в выходной файл.

    Пример вывода будет выглядеть так:

    $ cat checksums.csv
    128361894 41 /opt/xyz/2018/7/20/11/35/3f176f4b-41a0-4ac4-a795-a2240ffbb7b9.bin
    820470222 41 /opt/xyz/2018/7/20/11/35/4302b390-1134-424d-a92f-ad27b233e8c1.bin
    1593587341 41 /opt/xyz/2018/7/20/11/35/5ff59679-b3ec-46d2-aa7d-5ec28eff6fe9.bin
    

    Поскольку выходные данные содержат контрольную сумму трех столбцов, количество байтов и путь, нам нужно извлечь столбцы три и один на следующем шаге.

  2. Напечатайте строку заголовка и объедините столбец 1 (имя файла )из file.csvс столбцом 3 (путь )и столбец 1 (контрольная сумма )из checksums.csv.

    { echo "filename contenturl checksum";\
      paste -d ' ' <(awk -F'~' '{ print $1 }' file.csv) <(awk '{ print $3,$1 }' checksums.csv);\
    } > newfile.csv
    

    Пример вывода:

    $ cat newfile.csv
    filename contenturl checksum
    000224.pdf /opt/xyz/2018/7/20/11/35/3f176f4b-41a0-4ac4-a795-a2240ffbb7b9.bin 128361894
    000238.pdf /opt/xyz/2018/7/20/11/35/4302b390-1134-424d-a92f-ad27b233e8c1.bin 820470222
    000262.pdf /opt/xyz/2018/7/20/11/35/5ff59679-b3ec-46d2-aa7d-5ec28eff6fe9.bin 1593587341
    

    Затем очистить:

    rm checksums.csv
    
0
02.11.2020, 21:04
1 ответ

Пусть magic _cmd сохранит порядковый номер и отправит "select $seqno;" в mysql перед каждой командой. Направьте вывод mysql в файл, который впоследствии вы сможете проверить на наличие ошибок.

0
18.03.2021, 22:52

Теги

Похожие вопросы