Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
linux和windows中的awk行为不同_Linux_Windows_Awk_Gnuwin32 - Fatal编程技术网

linux和windows中的awk行为不同

linux和windows中的awk行为不同,linux,windows,awk,gnuwin32,Linux,Windows,Awk,Gnuwin32,我正在使用gnuplot程序中的以下awk shell命令更正使用gnuplot生成的test.eps文件的边界框: ! awk '{ if($1=="%%BoundingBox:"){left=$2-90; print left; bottom=$3-69; print bottom; right=$4+8; print right; top=$5+5; print top; print $1, left, bottom, right, top >> "1.txt"}\

我正在使用gnuplot程序中的以下awk shell命令更正使用gnuplot生成的test.eps文件的边界框:

! awk '{ if($1=="%%BoundingBox:"){left=$2-90; print left;  bottom=$3-69;   print   bottom; right=$4+8; print right; top=$5+5; print top; print $1, left, bottom, right, top >> "1.txt"}\
 else {print $0 >> "1.txt"} }' test.eps
! mv 1.txt test.eps
在linux下,这工作得非常好。如果我现在在windows下使用gnuwin命令awk运行完全相同的命令,它将不起作用,但会生成一个空文件1.txt,并相应地生成一个空test.eps
出了什么问题?

脚本生成空输出文件的唯一方法是输入文件为空(或者awk无法打开它或无法写入输出文件)。检查输入文件内容和输出目录/文件权限,并查找错误消息。不过,您知道Windows的报价规则与UNIX完全不同,对吧?从打印Hello World脚本开始,至少要确保您的脚本是正确的。我不熟悉gnuwin:您在其中运行什么shell?@Ed Morton:输入文件test.eps不是空的;在linux中,该命令工作得非常好,并且完成了它的本意:增加边界框。感谢您对报价规则的评论。我在哪里可以找到相关信息?谷歌搜索它,但通常的建议是将脚本放在一个文件中,并作为
awk-f scriptfile inputfile
运行,以避免Windows引用规则的噩梦。这是假设无论什么
gnuwin
都使用Windows报价规则,并且它没有提供类似UNIX的环境。就我个人而言,我只是安装并使用cygwin。