我需要在一个文件中将不同的代码放到许多文件中。 该文件由AWK的创建者在其主页上共享。 该文件也是here,方便使用。
我对问题的尝试
我可以通过
获取每个代码所在的行awk '{ print $1 }'
然而,我不知道如何
我确信这个问题可以通过AWK和Python解决。也许,我们需要一起使用它们。
第一个答案后[edit]
当我尝试使用awk执行它时出现以下错误
$awk awkcode.txt
awk: syntax error at source line 1
context is
>>> awkcode <<< .txt
awk: bailing out at source line 1
答案 0 :(得分:3)
你有没有尝试过:
$ 1!= prev {close(prev); prev = $ 1} {print substr($ 0,index($ 0,“”)+ 1)&gt; $ 1}
从文件awkcode.txt中删除以下行:
#unbundle - 将捆绑包解压缩到单独的文件中
$ 1!= prev {close(prev); prev = $ 1} {print substr($ 0,index($ 0,“”)+ 1)&gt; $ 1}
awk -f unbundle.awk awkcode.txt
答案 1 :(得分:2)
您是否尝试以该格式解压缩文件?这是一种shell存档。有关详细信息,请参阅http://en.wikipedia.org/wiki/Shar
如果用awk执行该程序,awk将创建所有这些文件。您不需要编写或重写太多。你可以简单地运行那个awk程序,它应该仍然有效。
首先,以“普通”格式查看文件。 http://dpaste.com/12282/plain/
其次,将文件的普通版本保存为'awkcode.shar'
第三,我认为您需要使用以下命令。
awk -f awkcode.shar
如果你想用Python程序替换它,它就是这样的。
import urllib2, sys
data= urllib2.urlopen( "http://dpaste.com/12282/plain/" )
currName, currFile = None, sys.stdout
for line in data:
fileName, _, text= line.strip().partition(' ')
if fileName == currName:
currFile.write(line+"\n")
else:
if currFile is not None:
currFile.close()
currName= fileName
currFile= open( currName, "w" )
if currFile is not None:
currFile.close()
答案 2 :(得分:0)
awk文件awkcode.txt不应包含任何BLANK行。如果遇到任何空行,则awk程序失败。没有错误检查来过滤掉代码中的空白行。经过几天的奋斗,我才能发现这一点。