我有一个 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 和 awk 来完成此操作吗?
谢谢
最佳答案
是的,您可以使用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
关于c - 使用 C 语言的 linux 系统命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17406475/