如何在计算一行中的字符数时允许变量制表符长度

时间:2015-03-04 20:21:33

标签: bash grep

我想计算一行中的字符数,但允许更改制表符的值。 我一直在研究一个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脚本很陌生。)

1 个答案:

答案 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