我有一个C源头文件:
const int my_2dim_array[1][2];
const int my_2dim_array2[2][3];
const int my_3dim_array1[3][4][5];
const int my_3dim_array2[1][2][3];
const int x_array[3];
const int y_array[4];
我怎样才能找到 -
仅限1-dim数组变量
仅限2-dim数组变量
仅限3-dim数组变量
单独的命令没问题。
我试过
grep 'const ' header.h | grep '].*['
然后它会出现'Invalid regular expression'
错误(在这里找到2-dim数组)
答案 0 :(得分:3)
只获得1-dim数组:
$ grep -E '[^]](\[[[:digit:]]+\]);' file.h
const int x_array[3];
const int y_array[4];
仅获取二维数组:
$ grep -E '[^]](\[[[:digit:]]+\]){2};' file.h
const int my_2dim_array[1][2];
const int my_2dim_array2[2][3];
仅获取3-D数组:
$ grep -E '[^]](\[[[:digit:]]+\]){3};' file.h
const int my_3dim_array1[3][4][5];
const int my_3dim_array2[1][2][3];
正则表达式的工作原理:
[^]] matches any character except
]`。
(\[[[:digit:]]+\])
匹配任何维度序列:[
后跟数字后跟]
。这个表达式都在parens (...)
内部,因此我们可以将重复因子应用于整个序列。
{3}
是一个重复因子,适用于维度序列。
;
匹配最后一个分号。
限制:此c解析器将允许此简单正则表达式未考虑的许多内容。