【发布时间】:2013-02-26 17:14:59
【问题描述】:
我正在尝试使用 sed /awk 命令来解析我的文本文件。 我想在同一行的两个模式之间打印文本,并在其中添加一些字符。 前任: 如果我的线路是
uint8_t aucRepresentationName[NR_UNIT_REPRESENTATIONS][CHARS_P_REPRESENTATION];
或
uint8_t aucRepresentationName [NR_UNIT_REPRESENTATIONS] [CHARS_P_REPRESENTATION];
我要打印NR_UNIT_REPRESENTATIONS*CHARS_P_REPRESENTATION
所以,我盯着 sed 命令在 '[' 之后插入行分隔符 \n ,在合适的物种中划分行,然后尝试再次解析它。
echo "bla bla bla [AK] bla bla bla bla [A_K] bla bla bla" | sed 's/\[/\n&/g;' | awk '{sub(/.*\[ /,"");sub(/\].*/,"");print;}'
echo "bla bla bla [AK] bla bla bla bla [A_K] bla bla bla" | sed 's/\[/\n&/g;' | sed -e 's/^.*\[ //g;s/ \].*$//g'
而且它并不总是二维数组,它可以是无或单/双维数组,我需要首先有多少个[]实例,如果它的0然后写1,如果它的单维数组然后ex A[ SIZE] 然后写入 SIZE 其两个维度数组 ex:A[RAW][COL] 写入 RAW*COL..
我想知道我的命令有什么问题?或任何其他选择,因为它将帮助我进一步学习 sed。
阿姆鲁塔
【问题讨论】:
-
没有名为 sed/awk 的工具。 sed 是在单行上进行简单替换的出色工具。对于所有其他文本操作,您应该使用 awk。您不需要学习 sed - 您可以从几个示例中了解您需要了解的所有内容。从阅读《Effective Awk Programming, Third Edition》这本书开始学习 awk。
-
您的代码中的无维数组是什么样的?它是一个大小为 [] 的数组还是一个标量变量或其他东西?发布一些更具代表性的示例输入,其中包括您要解析的所有类型的数组声明以及给定该输入的预期输出。
-
我的文本文件包含标量变量和一些数组。说 U8 A,U16 B[5],U16 B[4][2],u32 C[2][3][4].. 等等.. 我需要解析这个文件并将结果存储在文件中.. U8 1 U16 5 U16 4*2 U32 2*3*4
-
您应该更新您的问题以显示具有代表性的示例输入和预期输出,而不是尝试在评论中向我们描述它,以便我们必须弄清楚示例输入。