awk:致命:无法打开文件“(无此文件或目录)

我正在尝试从网格中的节点读取x和y坐标。 所有节点的坐标都在文件mesh_coords.xyz中。 我想要一个提到1055行,这是指一个名为哈利斯科州的地方。

nodes_file='../output/ascii/mesh_coords.xyz' jalisco=`awk '{if (NR==1055) print $0}' ${nodes_file}` x=`awk '{print $1}' ${jalisco}` y=`awk '{print $2}' ${jalisco}` 

返回:“awk:cmd。line:1:fatal:无法打开文件`4250.000000'用于读取(无此文件或目录)”两次(我假设一次为x,一次为y)。

然而:

 nodes_file='../output/ascii/mesh_coords.xyz' awk '{if (NR==1055) print $0}' ${nodes_file} 

打印正确的x和y坐标。 我需要稍后使用variablesx和y,以便它们需要正确设置。

如果这是一个简单的awk / shell语法问题,我对Linux相对比较陌生,所以很抱歉。

我相信$jalisco变量是由一个字符串中的空格分隔的xy坐标。 显然$jalisco不是一个文件,因此你最后2个awk命令给出了错误。

你可以使用这个:

 x=$(awk '{print $1}' <<< "${jalisco}") y=$(awk '{print $2}' <<< "${jalisco}") 

或者更好的是,使用流程替换从第一个awk本身获取两个值:

 read xy < <(awk 'NR==1055' "$nodes_file") 

另外请注意,您的awk命令可以缩短为:

 awk 'NR==1055' "$nodes_file" 

默认的行为是打印行,所以当条件NR==1055为真时,awk会执行这个操作。