awk过滤失败的' / \ x20- \ x7F /'

时间:2014-07-25 17:35:39

标签: awk

有人可以帮忙解决这个问题吗? 为什么命令

awk '!/\x20-x7F/
当提供在CentOS 5中运行的字母“a”时,打印字母“a”,coreutils 5.97,bash 4.2.0(1)?这个命令应该否定过滤字母“a”,因为字母“a”是\ x61。

另外,

awk '/\x20-x7F/

在相同情况下不打印“a”,但会打印大于\ x7F的字符吗?

2 个答案:

答案 0 :(得分:2)

字符范围用方括号括起来,例如[0-9]和插入符号为负,例如[^0-9]。尝试awk '/[^\x20-\x7F]/',假设\x20\x7F识别某些字符。

答案 1 :(得分:1)

正则表达式不会这样。

/\x20-x7F/

这意味着字符-x7Fspace + - + x + 7 + F

它不是来自 - >至。它只是将\x20转换为空格,并将其余部分用作字符。

cat file
1 a
2 b
3 -x7F
4 c

这给第3行,因为它有你正在寻找的模式。

awk '/\x20-x7F/'
3 -x7F

她需要除第3行以外的所有行

awk '!/\x20-x7F/'
1 a
2 b
4 c