如何计算bash中一行的长度,以便排除缩进空格?

lea*_*erX 2 bash awk grep sed

我希望强制执行一条规则,即python代码中的任何行都不得超过80个字符.为此,我使用bash脚本计算文件中整行的长度.但是,我需要排除用于缩进的起始空格.我希望从行中第一个字符的位置开始计算,直到最后一个字符:例如:

    this is an example line
Run Code Online (Sandbox Code Playgroud)

length()需要返回(31-8 = 23)而不是31.

如何做到这一点使用sed,awkgrep查询?

Aks*_*gde 5

$ echo '    this is an example line' | awk '{gsub(/^ +/,""); print length}'
23
Run Code Online (Sandbox Code Playgroud)

说明:

gsub(/^ +/,"") - 简而言之,用当前记录/行/行中的null替换起始空格字符.

  • ^ 在字符串的开头断言位置,
  • space as char
  • + 量词 - 在一次和无限次之间匹配,尽可能多次,根据需要回馈(贪婪),