Skip to content

Instantly share code, notes, and snippets.

@kawaz
Created February 8, 2013 02:30
Show Gist options
  • Save kawaz/4736162 to your computer and use it in GitHub Desktop.
Save kawaz/4736162 to your computer and use it in GitHub Desktop.
列幅がバラバラなテキストを良い感じに見やすく整形してくれるawkスクリプト。
#!/bin/awk -f
BEGIN {
_sep = sep ? sep : " "
}
{
split($0, cols)
for(i=1; i<=length(cols); i++) {
col_size[i] = max(col_size[i], length(cols[i]))
}
rows[NR]=$0
}
END {
for(row_i=1; row_i<=length(rows); row_i++) {
split(rows[row_i], cols)
print_fmt(cols, _sep)
}
}
function print_fmt(cols, sep) {
for(i=1; i<=length(cols); i++) {
col = cols[i]
if(1 < i) {
printf sep
}
printf "%" (col ~ /^[0-9]/ ? "" : "-") col_size[i] "s", col
}
printf "\n"
}
function max(a, b) {
return a < b ? b : a
}
@kawaz
Copy link
Author

kawaz commented Feb 8, 2013

例えば↓これが…

[root@r5 ~]# df -HTP
Filesystem    Type     Size   Used  Avail Use% マウント位置
/dev/mapper/VolGroup-lv_root ext4   9.1G   2.4G   6.3G  28% /
tmpfs        tmpfs     2.6G      0   2.6G   0% /dev/shm
/dev/sda1     ext4     508M    42M   440M   9% /boot
saba2:/home/share nfs   3.0T   2.7T   142G  95% /home/share
saba2:/media/btrfs-r1/saba2/ROOT nfs    64T    43T    17T  72% /home/files/root

↓こうなる!

[root@r5 ~]# df -HTP | format_table.awk
Filesystem                        Type   Size  Used  Avail  Use%  マウント位置
/dev/mapper/VolGroup-lv_root      ext4   9.1G  2.4G   6.3G   28%  /
tmpfs                             tmpfs  2.6G     0   2.6G    0%  /dev/shm
/dev/sda1                         ext4   508M   42M   440M    9%  /boot
saba2:/home/share                 nfs    3.0T  2.7T   142G   95%  /home/share
saba2:/media/btrfs-r1/saba2/ROOT  nfs     64T   43T    17T   72%  /home/files/root

@kawaz
Copy link
Author

kawaz commented Feb 8, 2013

数字っぽい値は右寄せにしてくれる気の利かせようw

@kawaz
Copy link
Author

kawaz commented Feb 8, 2013

awkなんでCSVをフォーマットしたいときは-F,とかのオプションを付けてやればよい

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment