我想计算一行中的字符数,但允许更改制表符的值。 我一直在研究一个bash脚本,它打印出包含> 80个字符的行(在给定文件中):
grep -r '.\{81,\}' $args
我想我正在寻找一种方法来做这样的事情:
# pseudocode
TAB_LENGTH = 4
LINE_MAX = 80
if ( (number of non-tab characters) + TAB_LENGTH*(number of tab characters) > LINE_MAX)
print out the file, line number, and line.
fi
任何提示? (我对bash脚本很陌生。)
答案 0 :(得分:1)
如果要计算一行中的字符数,可以将制表符视为单个字符('\ t')。选项卡的宽度由您使用的shell设置。
所以你只需要
if ( (number of characters) > LINE_MAX)
print out the file, line number, and line.
fi
如果您想控制固定宽度,可以使用printf来控制给定字符串的最小字段宽度。
printf "|%-5s|" "ABC"
会产生如下输出:
|ABC··|
(在此示例中,字符是空格的占位符)
这里可以找到一个非常有用的页面(语法适用于c ++,但解释转换为bash):http://wpollock.com/CPlus/PrintfRef.htm