linux和windows中的awk行为不同
我正在使用gnuplot程序中的以下awk shell命令更正使用gnuplot生成的test.eps文件的边界框: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"}\
! 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。