0

1 つのファイルから多くのファイルに異なるコードを入れる必要があります。このファイルは、AWK の作成者によってホームページで共有されているようです。ファイルもここにあり、簡単に使用できます。

問題への私の試み

各コードが配置されている行を取得できます

awk '{ print $1 }'

ただし、方法はわかりません

  1. 正確な行番号を取得して使用できるようにする
  2. 各行の最初の単語が無視されるように、特定の行の間のコードを収集する
  3. これらの個別のコードを、行の最初の単語で名前が付けられた新しいファイルに入れる

この問題は、AWK と Python でも解決できると確信しています。おそらく、それらを一緒に使用する必要があります。

[編集]最初の回答の後

awkで実行しようとすると、次のエラーが表示されます

$awk awkcode.txt 
awk: syntax error at source line 1
 context is
     >>> awkcode <<< .txt
awk: bailing out at source line 1
4

3 に答える 3

2

その形式でファイルを解凍しようとしていますか? これは一種のシェル アーカイブです。詳細については、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()
于 2009-03-11T01:38:06.497 に答える
0

awk ファイル awkcode.txt には空白行を含めないでください。空白行があると、awk プログラムは失敗します。コード内の空白行を除外するエラー チェックはありません。これは、数日間の闘争の末に見つけることができました。

于 2013-10-07T07:47:06.670 に答える