あなたのデバッグログはあなたに全体の話をしています;-)
sed -e s//Yes/ -e s//Resolved---03-25-13/ -e s//Pass/ -e s//#348017/1 -e s///
#------^-- empty regular expression
したがって、エラーメッセージ"no previous regular expression".
あなたの経験について明確ではないので、2つの解決策があります。UNIX / Linuxベースのシェルでは、dbl-quotes内の文字列が変数置換について評価され、コード"s/$OLDTEST/$TESTING/"
が変数置換を必要とする文字列のように見えることを思い出してください。
あなたがする必要があるかもしれません
export OLDTEST="something old"
export TESTING="something new"
そのコードが機能するために。
リテラル文字列'$OLDTEST'をリテラル文字列'$TESTING'に置き換えたい場合は、シェル処理から変数を「非表示」にする必要があります。これは、unix/linuxで一重引用符を使用して行います。 。、それであなたのコマンドは
sed 's/$OLDTEST/$TESTING/
s/$CURRENTVALU/$NEWSTATUS---$DATE/
s/$PASSORFAIL/$PASSORFAILNEW/
s/$BGCOLOR/$BGCOLORNEW/$POSITION
s/$OLDNOTE/$NOTE/' >> //sysadm/shared/file.tmp
しかし..ここに入力ファイルが表示されません。
だから本当に
sed 's/ ...../..../ ; s/../..../; etc; s/.../../' inputFile >> //sysadm/shared/file.tmp
そして、おそらく、tmp拡張子を持つもののために既存のファイルに追加したくないので、...
sed 's/ ...../..../ ; s/../..../; etc; s/.../../' inputFile > //sysadm/shared/file.tmp
#-----------------------------------------------only one > -^-------
>>
sedスクリプトを強化するテストとして手段を使用し、各実行の結果を同じファイルに追加します。重複した情報がたくさんあることになります。
-e
オプションを省略して、sedの省略形を使用しました。ここに示すように、Sedはcmdのグループ全体を1つの引数として処理できます。これらのコマンドをすべて別のファイルに入れて、次のように呼び出すこともできます。
sed -f fixer.sed inputFile > //sysadmin/shared/file.tmp
そして最後に、もしあなたsed
がそのオプションをサポートしているなら、あなたは-i
あなたの変更を「インライン」にして、
sed -i -f fixer.sed inputFile
そして、sedは古いファイルを変更で上書きします。すべてがあなたの試みている仕事を変え、意図しない結果を引き起こさないことが確実になるまで、これに反対することをお勧めします。元のファイルがなくなると元に戻すことはできないので、実行中に.tmpに保存することは安全ベルトとして優れています:-)
IHTH