Чтобы вычислить наибольшую/наибольшую длину первого поля, а затем переформатировать значения в поле в соответствии с этой длиной, вам придется выполнить два отдельных прохода по файлу.
awk 'BEGIN { OFS = FS = "|" }
FNR == NR { if (m < (n=length($1))) m = n; next }
{ $1 = sprintf("%-*s", m, $1); print }' file file
(обратите внимание, что входной файл указывается дважды в командной строке)
Для данных, которые вы представляете, это даст
c1 |c2|c3|c4|c5
c6 |c7|c8|c9|c10
c11|c12|c13|c14|c15
Первый проход обрабатывается блоком FNR == NR
, который просто отслеживает самое длинное поле, видимое до сих пор, (m
, содержит максимальную видимую длину ), и переходит к следующей строке.
Второй проход обрабатывается последним блоком, который переформатирует первое поле, используя sprintf()
. Строка формата %-*s
означает «выровненную по левому краю -строку, ширина которой задается целочисленным аргументом перед аргументом, содержащим фактическую строку».
Это, очевидно, можно было бы расширить, чтобы сделать все столбцы, превратив скаляр m
в массив, который содержит максимальную ширину каждого столбца:
$ awk 'BEGIN { OFS = FS = "|" }
FNR == NR { for (i=1; i<=NF; ++i) if (m[i] < (n=length($i))) m[i] = n; next }
{ for (i=1; i<=NF; ++i) $i = sprintf("%-*s", m[i], $i); print }' file file
c1 |c2 |c3 |c4 |c5
c6 |c7 |c8 |c9 |c10
c11|c12|c13|c14|c15
Согласно рекомендациям, прокомментированным @Gilles, похоже, что /tmp и /var/tmp подключены к одному и тому же виртуальному тому:
[root@l12662 tmp]# grep /tmp /proc/mounts
/dev/mapper/rootvg-tmplv /tmp xfs rw,nosuid,nodev,noexec,relatime,attr2,inode64,noquota 0 0
/dev/mapper/rootvg-tmplv /var/tmp xfs rw,nosuid,nodev,noexec,relatime,attr2,inode64,noquota 0 0
[root@l12662 tmp]# stat /tmp /var/tmp
File: ‘/tmp’
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: fd05h/64773d Inode: 64 Links: 27
Access: (1777/drwxrwxrwt) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2021-11-24 08:30:34.016446287 -0700
Modify: 2021-11-24 08:30:55.398311353 -0700
Change: 2021-11-24 08:30:55.398311353 -0700
Birth: -
File: ‘/var/tmp’
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: fd05h/64773d Inode: 64 Links: 27
Access: (1777/drwxrwxrwt) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2021-11-24 08:30:34.016446287 -0700
Modify: 2021-11-24 08:30:55.398311353 -0700
Change: 2021-11-24 08:30:55.398311353 -0700
Birth: -