2017-11-19 15 views
0

私はターミナルで独占的に作業していて、ちょっと立ち往生しています。私は、テキストのサンプルを生成するためにニューラルネットワークを使用しています、そして、私はすべての新しい行の文字とキャリッジリターンを各サンプルから削除したいと思います。私はサンプルをテキストファイルに書きたいと思います。ファイルに書き込む前にRNNで生成されたテキストから空白を削除するスクリプト

これまでのところ、100サンプルをファイルに書き込むことができましたが、ファイルに書き込まれる前に、各行の改行文字とキャリッジリターンを取り除く方法がわかりません。

for ((i=1;i<=100;i++)) ; do th sample.lua -checkpoint cv/checkpoint_10000.t7 -length 93 -gpu -1 >> sample.txt ; done

基本的に私は彼らの真ん中にキャリッジリターンを持っているいくつかのサンプルを持っているだけで、独自の単一ライン上の各サンプルを取得したいです。最善のアプローチ?

編集:これが機能します!

for ((i=1;i<=100;i++)) ; do th sample.lua -checkpoint cv/checkpoint_10000.t7 -length 93 -sample 1 -gpu -1 | tr -d "\r\t\n" | sed 's/./&\n/93' >> sample.txt ; done

+1

の場合そのコードは 'bash'であり、タイプミスがありますここに: '; >> sample.txt; done' – agc

答えて

2

これを行う最も簡単な方法は、trを経由して、おそらくです:

tr '\n\r' ' ' < intput-file > output-file 
+0

この構文を説明できますか?私は入力ファイルを持っていません。ニューラルネットワークはテキストサンプルを生成しており、ファイルからは出力されません。 – Daina

+1

@Daina ha。 agcは私にそれを打つ。 'tr'は2つの引数、1つの文字セットと別の文字セットをとります。 'tr'は最初の文字セットを2番目のセットに"翻訳 "します。あなたの場合は、新しい行をすべて削除したい(新しい行は、異なるプラットフォーム上で '\ n'、 '\ r \ n'、または '\ r'を意味する)。したがって、スクリプトはすべての新しい行を空白で置き換えます。 "|" AGCの答えでは、Unixでは "パイプ"と呼ばれています。それは、左辺を入力のように扱います。 ">"はリダイレクトと呼ばれます。 'tr'の出力はデフォルトでターミナルに直接出力されます。 ">"を使用すると、出力を指定されたファイルにリダイレクトします – realharry

+2

リターン/改行文字の実行を1つのスペースにまとめるには、 'tr -s '\ r \ n' '''を使用します。 –

1

これはうまくいくかもしれない:

for ((i=1;i<=10000;i++)) ; do 
    th sample.lua -checkpoint cv/checkpoint_10000.t7 -length 93 | tr `\n\r' ' ' 
    echo 
done > sample.txt 

realharry's answerから盗まれtrコード。)

関連する問題