Как исправить длину столбца в файле данных и преобразовать его в CSV-файл
Мое требование - удалить специальные символы и несколько последовательных пробелов в unix и преобразовать файл в файл csv. Я могу достичь вышеуказанных вещей, но моя проблема в том, что длина моего выходного столбца CSV-файла отличается от длины столбца таблицы. Мне нужно обрезать столбцы после удаления специальных символов и пробелов, так что я не могу сделать это в представлении, прежде чем bcp из данных.
Мне нужно справиться с этим внутри Unix
Ниже приведены команды, которые я использую
bcp master..STTV_CSTDL out temp.dat -Sdev1 -Udbo -Pdbo1 -b1000 -c -t'123456789'
awk '{gsub(/[[:punct:]]/," ")}1' temp.dat > temp2.dat
sed -e 's/ */ /g' temp2.dat > temp3.dat
До этого шага я могу получить чистые данные после удаления специальных символов, но после этого мне нужно установить длину столбца
у меня есть около 25 столбцов, в которых column3 - 10 символов (у данных будет максимум 20 символов) column5 - 19 символов (у данных будет максимум 35 символов) column19 - 21 символ (у данных будет максимум 19 символов. поэтому дополнительно 3 пробелы должны быть добавлены в конце).
Для этого я также попробовал приведенную ниже команду, но она не работает, как ожидалось
awk 'BEGIN {F="123456789" };
{
printf ("%-12s%-1s%-10s%-1s%-19s%-8s%-4s%-9s%-1s%-1s%-8s%-10s%-1s%-19s%-25s%-22s%-2s%-9s%-1s%-1s%-s%-s%-s%-s%-s\n",$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25)}' temp3.dat > temp4.dat
после использования этой команды в определенных строках записи перемещаются в следующий столбец, и файл полностью перекрывается. Пожалуйста, помогите мне, я борюсь за 2 дня для этого.
Пример ввода и желаемый вывод
INPUT
606322089~ ~CHRISTINAITYREW~E~MARCHETTO ~00210816~0000~ ~ ~ ~ ~ ~ ~ ~AD DR ADDRESSAD DR ADDRESS U~CINCINNATI ~OH~452060000~ ~ ~SECOSXSDS ND SAMPLE ~ ~ ~ ~
OUTPUT
606322089~ ~CHRISTINAI~E~MARCHETTO ~00210816~0000~ ~ ~ ~ ~ ~ ~ ~AD DR ADDRESSAD DR~CINCINNATI ~OH~452060000~ ~ ~SECOSXSDS ND SAMPLE ~ ~ ~ ~
1 ответ
Вот несколько примеров использования поля точности:
# printf "X%-3.3sX\n" .
X. X
# printf "X%-3.3sX\n" .........
X...X
# printf "X%-.3sX\n" .........
X...X
# printf "X%.3sX\n" .........
X...X
# printf "X%.3sX\n" .........
X...X
# printf "X%.5sX\n" .........
X.....X
# printf "X%.5sX\n" .
X.X
# printf "X%5.5sX\n" .
X .X
# printf "X%-5.5sX\n" .
X. X
Обратите внимание на эффекты комбинации поля точности и поля ширины, когда значение для печати меньше значений поля ширины и поля приоритета.