Skip to content

Instantly share code, notes, and snippets.

@jhyland87
Created March 8, 2018 16:07
Show Gist options
  • Save jhyland87/d42e8ec133dce6525d26b13649055abf to your computer and use it in GitHub Desktop.
Save jhyland87/d42e8ec133dce6525d26b13649055abf to your computer and use it in GitHub Desktop.
#! /usr/local/bin/awk -f
# Examples:
# ls -1 | ./hr-with-string.1.awk
# ls -1 | ./hr-with-string.1.awk -v pad=30
# ls -1 | ./hr-with-string.1.awk -v pad=30 -v hr='-'
# ls -1 | ./hr-with-string.1.awk -v pad=30 -v hr='><'
function center( str, a, left, right ){
right = int(( CFG[ pad ] - length(str)) / 2)
left = CFG[ pad ] - length(str) - right
return sprintf( "%" left "s%s%" right "s", "", str, "" )
}
function center_hr( str, hr_len ){
if ( ! hr_len ) hr_len = CFG[ pad ]
hr_right = sprintf( "%"hr_len"s","" )
hr_left = sprintf( "%"hr_len"s","" )
gsub( / /, CFG[ hr_l ], hr_left )
gsub( / /, CFG[ hr_r ], hr_right )
print hr_left center( str, 30 ) hr_right
}
BEGIN {
printf( "%-6s | %-15s : %s\n", "BEGIN", "padding", padding )
printf( "%-6s | %-15s : %s\n", "BEGIN", "pad", pad )
printf( "%-6s | %-15s : %s\n", "BEGIN", "char", char )
printf( "%-6s | %-15s : %s\n", "BEGIN", "hr", hr )
if ( padding ) CFG[ pad ] = padding
else if( pad ) CFG[ pad ] = pad
else CFG[ pad ] = 10
if ( char ) CFG[ hr ] = char
else if( hr ) CFG[ hr ] = hr
else CFG[ hr ] = "-"
if ( length( CFG[ hr ] ) == 1 ){
CFG[ hr_l ] = CFG[ hr ]
CFG[ hr_r ] = CFG[ hr ]
}
else if ( length( CFG[ hr ] ) == 2 ){
#else {
CFG[ hr_l ] = substr( CFG[ hr ], 1, 1 )
CFG[ hr_r ] = substr( CFG[ hr ], 2, 1 )
}
print "CFG[ hr_l ]:",CFG[ hr_l ]
print "CFG[ hr_r ]:",CFG[ hr_r ]
printf( "%-15s : %s\n", "length( CFG[ hr ])", length( CFG[ hr ]) )
#print hr center( "Something I want to print", 30 ) hr
#print hr center( "foo", 30 ) hr
#print hr center( "FOO BAR baz", 30 ) hr
}
{
center_hr( $0 )
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment