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

数字っぽい値は右寄せにしてくれる気の利かせよう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