有人可以帮忙解决这个问题吗? 为什么命令
awk '!/\x20-x7F/
当提供在CentOS 5中运行的字母“a”时,打印字母“a”,coreutils 5.97,bash 4.2.0(1)?这个命令应该否定过滤字母“a”,因为字母“a”是\ x61。
另外,
awk '/\x20-x7F/
在相同情况下不打印“a”,但会打印大于\ x7F的字符吗?
答案 0 :(得分:2)
字符范围用方括号括起来,例如[0-9]
和插入符号为负,例如[^0-9]
。尝试awk '/[^\x20-\x7F]/'
,假设\x20
和\x7F
识别某些字符。
答案 1 :(得分:1)
正则表达式不会这样。
/\x20-x7F/
这意味着字符-x7F
(space
+ -
+ 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