2016-09-17 8 views
0

バッチファイルを区切るコマンドをエコーするバッチスクリプトがあり、そのファイルを呼び出します。外部バッチファイルコマンドが実行されるたびに、コマンドの前にランダム1が追加されます。これは前に起こっていなかったし、一見無作為に発生し始めた。バッチファイル内のSEDコマンドが正常に実行されなくなります。コマンドを実行する前に1を追加するバッチファイル

SED -n -e "/point1/,/point2/p" test.csv > point1.csv 

は、これが起こっている理由として

SED -n -e "/point1/,/point2/p" test.csv 1>point1.csv 

任意のアイデアとして出力されますか?

+1

はい、あなたはWindowsを使用していますので、何らかの理由で何もできません。 cygwinをインストールして、シェルからコマンドを実行してください。あなたの正気を保存してください。 –

+0

リダイレクト演算子 '> 'は' 1> 'と等価です。明示的に指定されていない場合に追加されたリダイレクションハンドル(この場合、標準出力を意味する「1」、_STDOUT_)がリダイレクトされます。 '<'は '0 <'になります... – aschipfl

答えて

1

リダイレクタの直前の文字は論理デバイス番号です。 0はstdin(通常はキーボード)、1はstdout(通常はconsole)、2はstderr(通常はconsole)です。

構文 "> filename"は実際には "1> filename"の略語であり、したがって "1"の外観です。

悲しいことに、あなたの説明では、問題が重複することは許可されていません。 「バッチファイル内のSEDコマンドが正しく実行されない」とは、「期待通りに実行できないバッチファイル(発電機または子会社)のSEDコマンド」を意味する。

生成コマンドの例、処理されるべきデータ、期待される結果及び実際の結果を含むことができる。 (外に出る必要はありません - 数行は必要ですが、このデータを含めるために質問を編集するだけです)

+1

私は問題を解決しました。それは1>とは無関係であることが分かった。 しかし、以前にWindowsが1を印刷し始めたのはなぜですか? – Ericvb86

+0

AFAIR、 'これまでにNTで、1996年以前のNT4に戻る。 DOSスクリプトとの互換性のために、 '1>'と '>'は同義語です。 '2>'は頻繁には使用されません。おそらく理論に従うための準備(stderrへのエラー報告、stdoutへの通常出力)。すべてを見るためには、 'echo'をオンにして、コマンドを画面に表示してみてください。固執点は 'echo 12 x> file'で、' x'が '1'ならば' echo'を '12'に、' 12''を 'echo'に、' x'が '12'ならば' 'は例えば' 3 'です。 – Magoo

+0

リダイレクタの直前の1桁の出現がこの動作を呼び出します.0,1,2は実装された唯一のデバイスですが、任意の数字は奇妙な動作をするようです。したがって、通常、 '> filename echo 12 3'という構文が実装されています。 – Magoo

関連する問題