我有一个c程序,必须在linux机器上获取有关特定文件的信息。例如:
#include <stdlib.h>
int main(){
system("/bin/stat /home/kehelc/programs/test.dtl | egrep Birth | awk '{ print $2, $3 }'");
return 0;
}
这输出: 2013-07-01 11:57:52.208220100
我现在要格式化此输出,使其看起来像: 星期一,2013年7月1日11:57:52
我可以用sed&amp; AWK?
感谢
答案 0 :(得分:1)
是的,你可以使用popen并阅读输出流,然后你可以随意格式化它;)
/* simply invoke a app, pipe output*/
pipe = popen("ls -l", "r" );
if (pipe == NULL ) {
printf("invoking %s failed: %s\n", buf, strerror(errno));
return 1;
}
waitfor(10);
while(!feof(pipe) ) {
if( fgets( buf, 128, pipe ) != NULL ) {
printf("%s\n", buf );
}
}
/* Close pipe */
rc = pclose(pipe);
或者您可以直接在awk中使用strftime:
awk '{print strftime("%c", ( <timestamp in milliseconds> + 500 ) / 1000 )}'
请参阅strftime手册页以供参考 http://linux.die.net/man/3/strftime