-1

私はこれをやっています:

lastnames="test"
mode="04"
print $0 >> sprintf("%s\/%s_file_%s.txt",lastnames,lastnames,mode);

それは言います:fatal: can't redirect to `/_file_04.txt' (Permission denied)

しかし、私がこれを行うと:

lastnames="test"
mode="04"
print $0 >> sprintf("test/%s_file_%s.txt",lastnames,mode);

それは働いています。どうしてこれなの?私は何か間違ったことをしていますか、それともディレクトリ名を置き換える特別なケースがありますか? それとも逃げる必要がありますか%s/%s

私はどんな助けにも感謝します..どうもありがとう

4

2 に答える 2

1

わたしにはできる。変数宣言 ( lastname) と使用法 ( )の間にタイプミスがないこと、およびディレクトリが作成されないlastnamesため、ディレクトリが存在することを確認してください。awk

sprintf回避策の 1 つは、次のように を回避することです。

awk ' {
    lastname="test"
    mode="04"
    print $0 >> lastname "/" lastname "_file_" mode ".txt"
} 
' infile
于 2012-08-07T07:55:56.073 に答える
0

愚かで申し訳ありませんが、私は同じことを数回ループし、ループとして何度も分割していました。その結果、これが起こっています:

split(name, lastnames, "") => [first, second]

その後、2番目のループnameにはすでに分割されているため、文字列がありません..その結果、次のようなものを参照していました:/file.txt前のフォルダ名/が空だったため..

とにかくあなたの意見をありがとう..

于 2012-08-07T09:50:44.260 に答える