Linux Awk:无法连接字符串

Linux Awk:无法连接字符串,linux,awk,concatenation,Linux,Awk,Concatenation,我目前正在处理AWK,我处理三个变量: $0变量-在本例中,它相当于: path/filename.cpp日志\u错误 这个代码是错误的 您使用了$logName,这意味着列索引logName,显然这不是您想要的 如果logName的值是stringfilename,awk将尝试获取列 $filename在这里,如果未定义/分配变量,并且您尝试将其作为数字获取,awk将获得0。您可以测试以下内容: kent$ echo "xxxx y y"|awk '{print $foo}' xxxx y

我目前正在处理AWK,我处理三个变量:

  • $0变量-在本例中,它相当于:
path/filename.cpp日志\u错误
这个代码是错误的

您使用了
$logName
,这意味着列索引
logName
,显然这不是您想要的

如果
logName
的值是string
filename
,awk将尝试获取列

$filename
在这里,如果未定义/分配变量,并且您尝试将其作为数字获取,awk将获得
0
。您可以测试以下内容:

kent$ echo "xxxx y y"|awk '{print $foo}'
xxxx y y
所以我想,解决方法是:(如果
logName
设置了正确的值,正如您所说的)

编辑

永远不要调用
$logName
检查以下示例:

kent$echo "111 222"|awk -v logName="filename" '{logName=logName $2;print logName}'                                                                             
filename222

显示您的awk代码不正确。在
logName=logName$2之后调用$logName上的print仅打印出
文件名
:/@S.T.A.L.K.E.R。如果我是你,我会这样得到字符串:
awk-F'\\\.cpp |/“{print$2$3}”
不起作用,我有上面提到的$0格式的大约20行。不过还是要谢谢你@S.T.A.L.K.E.R。20或2k线路根本不是问题。不管怎样,我希望您理解代码中的问题。您的代码中不应该有
$logName
。祝你好运
logName=$logName $2;
kent$ echo "xxxx y y"|awk '{print $foo}'
xxxx y y
logName=logName $2;
kent$echo "111 222"|awk -v logName="filename" '{logName=logName $2;print logName}'                                                                             
filename222