Как /tmp связан с /var/tmp

Чтобы вычислить наибольшую/наибольшую длину первого поля, а затем переформатировать значения в поле в соответствии с этой длиной, вам придется выполнить два отдельных прохода по файлу.

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
2
24.11.2021, 14:25
1 ответ

Согласно рекомендациям, прокомментированным @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: -
2
24.11.2021, 14:39

Теги

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