如何将字符串附加到每个单元格(使用 awk)?

chz*_*zzh -2 awk cal

这是 的输出cal<SPACE>向每个单元格附加一个附加项的最简单方法是什么?

     June 2021        
Su Mo Tu We Th Fr Sa  
       1  2  3  4  5  
 6  7  8  9 10 11 12  
13 14 15 16 17 18 19  
20 21 22 23 24 25 26  
27 28 29 30
Run Code Online (Sandbox Code Playgroud)

预期结果:

     June 2021
Su  Mo  Tu  We  Th  Fr  Sa
         1   2   3   4   5
 6   7   8   9  10  11  12
13  14  15  16  17  18  19
20  21  22  23  24  25  26
27  28  29  30
Run Code Online (Sandbox Code Playgroud)

Ed *_*ton 6

这可能是你想要做的:

$ cal | awk 'NR>1{gsub(/.../,"& ")}1'
      June 2021
Su  Mo  Tu  We  Th  Fr  Sa
         1   2   3   4   5
 6   7   8   9  10  11  12
13  14  15  16  17  18  19
20  21  22  23  24  25  26
27  28  29  30
Run Code Online (Sandbox Code Playgroud)

请注意,它不会在每行末尾的“单元格”中添加一个空格,也不会在月+年行的“单元格”之后添加一个额外的空格。

  • 正确的。我也可以使用 `.{3}` 但那是 1 个额外的输入字符 :-) 并且它在不支持正则表达式间隔的 awk 版本中不起作用,例如 `nawk` 或 `/usr/xpg4 /bin/awk` 在 Solaris 上,我不记得没有 `--re-intervals` 的 GNU awk 和旧版本。 (2认同)