需要帮助理解awk(&&&&&)代码下面的代码:

时间:2014-02-18 10:17:54

标签: awk

#!/bin/awk -f
{
 if (length($0) < 80)
 {
      prefix = "";
       for (i = 1;i<(80-length($0))/2;i++)
          prefix = prefix " ";
        print prefix $0;
    }
else
 {
print;
    }
}

任何人都可以告诉我前缀变量在上面的代码中究竟做了什么。

4 个答案:

答案 0 :(得分:1)

这是为了将传入的文本设为中心对齐文本。

  1. 阅读文字
  2. 在变量名称前缀
  3. 中声明一个空字符串
  4. 计算粘贴文本的位置由for循环确定,前缀为空格。在这种情况下,我们打印空格,直到我们处于((80-字符串的长度)/ 2)的位置
  5. 打印字符串
  6. 注意:AWK中的$ 0是完整的字符串,例如“我想测试这个”,其中$ 1将是“我”而$ 2将是“想要”,而在shell中它打印你的你正在使用的当前shell

答案 1 :(得分:1)

如果线条长度短于线条长度,它会添加前填充以使线条在线条中居中,但您可以只使用以下内容执行相同的操作:

awk '{ printf "%*s\n",(80+length($0))/2, $0 }'  file

答案 2 :(得分:0)

使用空格增加prefix,根据公式在前面创建一个前面有空格的行。

echo "test" | awk -f script
                                     test

答案 3 :(得分:0)

它构建一个空字符串占位符(用于左边填充),其长度为(80-length of the line)/2