Bash 将字符串转换为C printf语句的Shell命令

Bash 将字符串转换为C printf语句的Shell命令,bash,shell,awk,Bash,Shell,Awk,我有一个文件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 ); ..... .....

我有一个文件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格式化为所需的输出。假设您的源文件是so.txt,我将把所需的文本格式复制到我的C程序中:

使用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);
最后,要编辑inplace,可以使用-i inplace参数

awk -i inplace '{ printf "printf ( \"%-10s       = %%x\", hi->%s);\n", $1, $1 }'  so.txt 

假设您的源文件是so.txt:

使用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);
最后,要编辑inplace,可以使用-i inplace参数

awk -i inplace '{ printf "printf ( \"%-10s       = %%x\", hi->%s);\n", $1, $1 }'  so.txt 

收集值和最大长度,然后在最后输出所有内容。所有内容都是相同大小的int 4字节。我只想将hi.txt格式化为所需的输出。我要将所需的文本格式复制到我的C程序中。收集值和最大长度,然后在最后输出所有内容。所有内容都是相同大小的int 4字节。我只想将hi.txt格式化为所需的输出。我将把所需的文本格式复制到我的C程序中。非常感谢。但所有printf语句都显示有效字段。我希望printf invalid=%x,hi->invalid;printf stats=%x,hi->stats;哎呀。更正。你应该提到-我只是GNU awk。非常感谢。但所有printf语句都显示有效字段。我希望printf invalid=%x,hi->invalid;printf stats=%x,hi->stats;哎呀。更正。你应该提到-我只是GNU awk。