Gawk命令不是从批处理文件执行,而是在命令行处罚款

时间:2014-08-19 04:01:57

标签: windows batch-file awk

这里有问题,但我不知道它是什么类型的问题,因此很难找到解决方案。可能是一个刷新/缓冲的东西,或批处理文件与命令行语法问题,不确定。

我有一个批处理文件,其中包含gawk命令,但它没有正确执行。如果我将它粘贴到DOS命令行窗口(我使用Win 7),它执行正常。

命令是:

gawk 'BEGIN {FS=OFS="^"} {print $1,$3,$2}' /cygdrive/c/0temp2/input.txt > C:\0temp2\output.txt

(所以我只是想重新排列几个字段,用" ^"作为字段分隔符)

如果从批处理文件运行,当DOS命令窗口弹出时,看起来它正在DOS提示符下执行,但实际上它是挂起的,同时是一个单独的文件(让我们称之为banana.txt)弹出运行脚本的.bat文件旁边的同一目录,并且字节值(banana.txt)从1字节变为零字节,表示脚本正在写入它。如果我在写入banana.txt时打开它,假设我在它不是零字节文件时捕获它,它包含以下内容:

C:\0Temp>gawk 'BEGIN { FS = "^"; OFS = "^" } ; {gsub("1","s1",$10)}1' /cygdrive/c/0temp1/banana.txt 1>C:\0temp2\banana.txt 

这个banana.txt文件对我来说很熟悉,并且在几天甚至几周前被一个gawk命令操作,但似乎已经确立了它的遗产,我无法摆脱爆炸的事情。有谁知道这里发生了什么?它让我发疯,我在网上找到的只是部分可能的(有时是冲突的)解决方案,指出了问题,但不允许我修复它,因为它们不够具体坦率地说,我是盲目的。

1 个答案:

答案 0 :(得分:1)

从Windows命令行提示符处键入命令where gawk。如果它列出的第一个文件的文件名为gawk.batgawk.cmd,则删除该文件或重命名。