【问题标题】:awk checking for spaces in columnsawk 检查列中的空格
【发布时间】:2016-08-16 00:40:30
【问题描述】:

使用固定记录长度的文件并尝试检查从位置 134 开始的列是否有空格,所有空格的长度为 160 这是我所拥有的:

 awk file.test |awk '{ teststr=substr($0,134,160); if (teststr ~ /^[[:space:]]*$/) {print "ALLSPACES"teststr"end"} else {print "NOTALLSPACES"teststr"end"} } '

即使 teststr 上有值,它也总是返回 else 部分

NOTALLSPACESTHIS IS A TESTend
NOTALLSPACES              end
NOTALLSPACES              end

awk 语句 /regex 有什么问题

【问题讨论】:

  • @Barmar..感谢您帮助格式化我的问题..Oppsie 这是一个错字.. ny 命令的结尾是:但仍然不起作用
  • 我试过你的脚本,它工作。不要忘记 awk 中的列位置 substr() 是从 1 开始的,而不是从 0 开始的。
  • @Balmar,我又试了一次,它成功了..谢谢!!!

标签: regex linux awk


【解决方案1】:

错字导致问题.. 用正确答案更新了上面的 awk 语句

 awk file.test |awk '{ teststr=substr($0,134,160); if (teststr ~ /^[[:space:]]*$/) {print "ALLSPACES"teststr"end"} else {print "NOTALLSPACES"teststr"end"} } '

TYPE:空格后的*$

【讨论】:

  • 不要把解决方案放在问题里,把它放在答案里。
  • 错字是什么?您说: 的问题是问题中的拼写错误,而不是真正的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-12
  • 2021-06-27
  • 1970-01-01
相关资源
最近更新 更多