1

12 の異なるファイルで 5 億レコードを 1 日クリーニングした後、バッチの自動化が必要です。

  1. HISTという名前のファイルが100個ほどあります?????? (HIST の後に最大 6 文字)

  2. それぞれに対して 4 つの操作を実行する必要があります。

     iconv -f US-ASCII -t UTF-8 %filename% - c -o %tempname1%   
     iconv -f UTF-8 -t UTF-8 %tempname1% -c -o %tempname2%   
     cat %tempname2% | tr -d '\r' > %morepermanentname%  
     sudo python blah.py %morepermanentname%
    

一時的な名前を作成する/行から行に渡し、ディレクトリ内のすべての HIST* ファイルに対してこのことをループする方法について誰かアドバイスできますか?

これは正しく見えますか?

for f in HIST*
do
    $temp1 = "temp1"
    $temp2 = "temp2"
    $semi = $f"perm"
    iconv -f US-ASCII -t UTF-8 "$f" -c -o "$temp1"
    iconv -f UTF-8 -t UTF-8 "$temp1" -c -o "$temp2"
    cat "$temp2" | tr -d '\r' > "$semi"
    sudo python blah.py "$semi"
 done

iconv utf-8 to utf-8-cは奇妙に見えますが、いくつかの問題が発生していることに注意してください。

4

3 に答える 3

1

を探していforます。

for f in HIST*
do
  ./process "$f"
done
于 2013-07-25T03:15:57.320 に答える
1

(入力ファイルが指定されていない場合は標準入力から読み取り、標準出力に書き込みます)の文書化された動作を考えるとiconv、明示的な中間ファイルはまったく必要ありません。

for file in HIST*
do
    semi="${file}perm"
    iconv -f US-ASCII -t UTF-8 -c "$file" |
    iconv -f UTF-8 -t UTF-8 -c |
    tr -d '\r' > "$semi"
    sudo python blah.py "$semi"
done

ファイル名変数を使用するときにそれらを引用符で囲むことにより、ファイル名にスペースが含まれている場合の問題も回避できます。問題になる可能性は低いと思われます。

blah.py興味深いのですが、一体なぜスクリプトに root 権限が必要なのですか? 半永久的なファイルを特権のある場所などにコピーしていますか? sudoコマンドの後に半永久的なファイルを削除する必要がありますか?

于 2013-07-25T03:46:37.533 に答える