2017-09-12 9 views
0

私は、角かっこのような特殊文字を含むローカルファイルを持っています。検索/置換時にsedが文字列の一部を削除します

ファイル名は元のファイル名

されるSEDと、ファイル名の一部を交換しようとすると、以下のようになります。sedの私が手に置き換えを行う場合

  • ddatum - ffirma - bbetreff (wwer) [tags_][Beleg]_007246-1 copy.pdf

結果は次のようになります。

  • 20161219 - ffirma - bbetreff (wwer) copy.pdf

別の例:元

  • ddatum - ffirma - bbetreff (wwer) [tags_][Beleg]_007858.pdf
  • 結果:20161231 - ffirma - bbetreff (wwer)

私が使用してsedコマンドは次のとおりです。

newName=`sed -e 's/ddatum/'\$firstDate'/g' <<< "\$f"` 

$ firstDa teには簡単な日付文字列が含まれています。 $ fには元のファイル名が含まれています。

リテラル文字を使用する必要があるとします。私の検索は今のところ役に立たなかった。どんなサポートにも感謝します。

+2

あなたの実際のコードではなく、それの中古説明を投稿してください。 –

+0

$ f文字列全体がおそらくsedになっていない可能性があるので、これは公正なbashの問題かもしれません。その問題をすべて軽減する簡単なスクリプトを用意することが最善の方法です。 – stevesliva

+0

他の人に同意すると、$ fはあなたの考えではない可能性があります。また、次のように試してみることもできます:newName = 'sed -e" s/ddatum/$ {firstDate}/g "<<<" $ {f} "' – flu

答えて

0

これはそれを行うだろう。

newName=`sed -e "s/ddatum/$firstDate/g" <<< "$f"` 

例:

$ f="ddatum - ffirma - bbetreff (wwer) [tags_][Beleg]_007246-1 copy.pdf" 
$ firstDate="20161231" 
$ newName=`sed -e "s/ddatum/$firstDate/g" <<< "$f"` 
$ echo $newName 
20161231 - ffirma - bbetreff (wwer) [tags_][Beleg]_007246-1 copy.pdf 
関連する問題