我正在尝试从网格中的节点读取 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: cannot open file ‘4250.000000' for reading (No such file or directory)”两次(我假设 x 一次,y 一次)。
但是:
nodes_file='../output/ascii/mesh_coords.xyz'
awk '{if (NR==1055) print $0}' ${nodes_file}
打印正确的 x 和 y 坐标。 我稍后需要使用变量 x 和 y,因此需要正确设置它们。
我是 Linux 的新手,如果这是一个简单的 awk/shell 语法问题,我深表歉意。
最佳答案
我相信 $jalisco
变量在字符串中保存由空格分隔的 x-y 坐标。显然 $jalisco
不是文件,因此您的最后 2 个 awk 命令出错。
你可以使用这个:
x=$(awk '{print $1}' <<< "${jalisco}")
y=$(awk '{print $2}' <<< "${jalisco}")
或者更好的是,使用进程替换从您的第一个 awk 本身获取这两个值:
read x y < <(awk 'NR==1055' "$nodes_file")
另请注意,您的 awk
命令可以缩短为:
awk 'NR==1055' "$nodes_file"
默认操作是打印该行,所以当条件 NR==1055
为真时,awk 将执行此操作。
关于linux - awk:致命:无法打开文件 `' 进行读取(没有这样的文件或目录),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26816605/