当\ s在awk中不起作用时,如何匹配确切的空格数

时间:2015-06-01 13:50:25

标签: regex awk

我在Linux中的文件中有以下模式匹配,我更喜欢使用awk:

/*   1 */
/*  65 */
/* 235 */
/*9999 */

虽然我已经尝试过以下代码,但看起来\s无法在我的服务器上运行。该模式总是总共9个字符。

\/\*[\w\d\s]{5}\*\/

我知道使用[[:space:]]可以解决这个问题,但是我无法弄清楚它是如何工作的。 理想情况下,我还想了解如何使用 POSIX 方法匹配say,3个空格以及数字和字符。示例:[:space:]{3}

2 个答案:

答案 0 :(得分:2)

这应该有用(如果我找到你的话):

awk '/\/\*[[:alnum:][:space:]]{5}\*\//' file.txt

答案 1 :(得分:1)

这可能是您正在寻找的内容:

$ awk '/\/\*[[:space:]]*[[:digit:]]+[[:space:]]*\*\//' file
/*   1 */
/*  65 */
/* 235 */
/*9999 */

$ awk '/\/\*[[:space:]]*[[:digit:]]{3}[[:space:]]*\*\//' file
/* 235 */

$ awk '/\/\*[[:space:]]*[[:digit:]]{3,}[[:space:]]*\*\//' file
/* 235 */
/*9999 */