-1

我有一个 ac 程序,它必须获取有关 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

我现在想格式化这个输出,使它看起来像:Mon, 1 Jul, 2013 at 11:57:52

我可以用 sed 和 awk 做到这一点吗?

谢谢

4

1 回答 1

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

于 2013-07-01T14:16:49.293 回答