我有一个文件" Hi.text"看起来像
valid = 0;
invalid = 0;
stats = 0;
inner_ufd = 0;
....
....
我想将hi.text文件内容的格式更改为
printf ( "valid = %x", hi->valid );
printf ( "invalid = %x", hi->invalid );
printf ( "stats = %x", hi->stats );
.....
.....
.....
我尝试了几个awk命令,但似乎都没有。请建议一种方法将hi.txt转换为所需的输出。它们都是相同的大小" int" 4字节 。我只想将hi.txt格式化为所需的输出。我要将所需的文本格式复制到我的C程序
答案 0 :(得分:4)
假设您的源文件是so.txt
:
$ awk '{ print "printf ( \""$1" = %x\", hi->"$1");" }' so.txt
printf ( "valid = %x", hi->valid);
printf ( "invalid = %x", hi->invalid);
printf ( "stats = %x", hi->stats);
printf ( "inner_ufd = %x", hi->inner_ufd);
使用printf,您可以获得更清晰的视图:
awk '{ printf "printf ( \"%-10s = %%x\", hi->%s);\n", $1, $1 }' so.txt
printf ( "valid = %x", hi->valid);
printf ( "invalid = %x", hi->invalid);
printf ( "stats = %x", hi->stats);
printf ( "inner_ufd = %x", hi->inner_ufd);
最后,要进行内部编辑,您可以使用-i inplace
参数。
awk -i inplace '{ printf "printf ( \"%-10s = %%x\", hi->%s);\n", $1, $1 }' so.txt