File io AWK:将结果写入具有格式化名称的文件

File io AWK:将结果写入具有格式化名称的文件,file-io,awk,formatted-text,File Io,Awk,Formatted Text,以下AWK代码从日志文件中提取Java线程转储: # First thread dump line /^Full thread dump Java/ { thread_dump=1; counter++; printf "Thread dump #%d\n", counter } # Last thread dump text block /^Heap[:space:]*$/ { thr

以下
AWK
代码从日志文件中提取Java线程转储:

# First thread dump line
/^Full thread dump Java/        {
        thread_dump=1;
        counter++;
        printf "Thread dump #%d\n", counter
}           

# Last thread dump text block    
/^Heap[:space:]*$/ {
        thread_dump=2;
}               

# Last thread dump line
{ if (thread_dump==2 && $0 ~ "^[:space:]*$") {
        thread_dump=0;  
        printf "End of Thread dump #%d\n\n", counter;
                                             }
}                                       

# Print line only if in thread dump block
{ if (thread_dump!=0) {print $0 } }
awk-f extract.awk log.out
的结果如下:

Thread dump #1
Full thread dump Java HotSpot(TM) 64-Bit Server VM (20.12-b01 mixed mode):   
...
End of Thread dump #1

Thread dump #2
Full thread dump Java HotSpot(TM) 64-Bit Server VM (20.12-b01 mixed mode):
...
End of Thread dump #2
我想将每个线程转储写入一个单独的文件。文件名应该包括一些数据,比如日期和连续id,比如
线程转储\u 002\u 2013\u 01\u 23\u 14\u 15

如何将
打印
命令重定向到格式化文件名?

更新:

以下工作:

print $0 >"some_file_name.txt"
但是,以下方面:

print $0 > counter".txt"
返回以下错误:

awk: syntax error at source line 25 source file extract.awk
 context is
    { if (thread_dump!=0) { print $0 >>>  >counter".txt" <<<  } }
awk: illegal statement at source line 26 source file extract.awk

awk:source file extract.awk第25行的语法错误
上下文是

{如果(thread_dump!=0){print$0>>>>>counter.txt“只需尝试将
>counter.txt”
添加到打印语句中即可。 例如:

printf "Thread dump #%d\n", counter >counter".txt";
如上所述,每个打印语句都应附加此字符串。 然后尝试运行awk脚本

某些风格的unix不支持这种语法。您是否在这行末尾加了分号

在这种情况下,请执行以下操作:

file=counter".txt";
    printf "Thread dump #%d\n", counter >file;

awk:source file extract.awk.context在源代码第25行出现语法错误。上下文是
{if(thread_dump!=0){print$0>>>>>counter.txt”,正如我所说的,使用第二种方法。