awk -F"|" 'BEGIN {OFS="|"} NR==1 {for (b=1;b 1 {for (i=1;i max[i]) max[i] = length($i)} } END {for (i=1;i <= NF;i++) print hdr[i],max[i]+0}' pipe_delimited_file.psv
Команда awk собирает информацию о максимальной длине полей в файле с разделителями «|».
— Параметр -F указывает разделитель, в данном случае «|».
— Команда ‘BEGIN {OFS=»|»}’ устанавливает выходной разделитель «|».
— Начиная считывание со строки 2 (NR > 1), для каждого поля в строке (i) команда сравнивает длину поля с максимальной длиной (max[i]) и обновляет значение максимальной длины.
— После обработки всего файла, команда выводит заголовки полей (hdr) и их максимальные длины, прибавляя 0 к значению максимальной длины (чтобы избежать вывода чисел в научной нотации).
Альтернативой может быть использование других инструментов обработки текста, например, Perl, Python или средств командной строки. Аргументы команды — путь к файлу «pipe_delimited_file.psv».