我目前正在处理 AWK,我使用了三个变量:
- $0 变量 - 对于这个例子,它相当于:
path/filename.cpp LOG_ERR << "error in this log" << e.what();
- $logName 变量 - 我解析出 cpp 文件的名称,即:
filename
- $2 变量 - 包含默认的第二个值:
LOG_ERR
问题:
我想要做的是像这样连接值:
logName=$logName $2;
filenameLOG_ERR
但我得到的不是期望值,而是:
filename LOG_ERR << "error in this log" << e.what();
我究竟做错了什么?
编辑:按要求编写 AWK 代码:
awk '{
logName=sub(/^.*\//,"",$1);
logName=sub(/\..*:/,"",$logName);
print $logName;
print $2;
logName=$logName $2;
print $logName;
}' $file
EDIT2:已修复。不要在 awk 中调用任何 $ 变量,除非它是一个字段编号。:)
awk '{
logName=$1;
sub(/^.*\//,"",logName);
sub(/\..*:/,"",logName);
print logName;
logName=logName $2;
print logName;
}' $file