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

标签 bash awk sed grep

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

    this is an example line

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

如何使用 sedawkgrep 查询来完成此操作?

最佳答案

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

解释:

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

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

关于bash - 如何计算 bash 中一行的长度,以便排除缩进空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47687675/

相关文章:

linux - 测试 Bash 反向 Shell

character-encoding - sed 拒绝替换模式 -> 文件(编码)错误?

regex - Perl 模式匹配,我们打印所有匹配部分,但仅打印匹配部分(而不是其余部分)

linux - ' : not a valid identifier Read and Curl

linux - 如何在 Linux 中使用 VLC 执行 nohup 命令

linux - 在 bash 中用 ' ' 替换 '\'

linux - 需要捕获两个搜索条件之间的行数

git - 如何在文件末尾没有换行符的情况下列出 Git 索引中的所有文件

Unix:文件有 28 列,以空格分隔,打印第 8 列唯一值以及第 16 列到第 28 列的总和

linux - 如果等于特定值,则替换列