Linux Awk:无法连接字符串
我目前正在处理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
- $0变量-在本例中,它相当于:
path/filename.cpp日志\u错误
这个代码是错误的
您使用了$logName
,这意味着列索引logName
,显然这不是您想要的
如果logName
的值是stringfilename
,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