リテラル文字列でsed-入力ファイルではありません


92

これは簡単なはずです。入力ファイルではなく、リテラル文字列に対してsedを実行したいのです。なぜかと思うと、それは、たとえばテキストデータではなく、変数に格納されている値を編集するためです。

私がする時:

sed 's/,/','/g' "A,B,C"

ここで、A、B、Cは、Aに変更したいリテラルです '、' B '、' C

私は得る

Can't open A,B,C

A、B、Cがファイルであると考えるかのように。

エコーするためにそれをパイプで試しました:

echo "A,B,C" | sed 's/,/','/g' 

プロンプトが表示されます。

それを行う正しい方法は何ですか?

回答:


149

一重引用符が競合しているため、以下を使用します。

 echo "A,B,C" | sed "s/,/','/g"

使用する場合 、あなたも行うことができます(<<<ですhere-string):

sed "s/,/','/g" <<< "A,B,C"

だがしかし

sed "s/,/','/g"  "A,B,C"

sed引数としてファイルを期待するため

編集

あなたが使うなら または他のもの:

echo string | sed ...

1
奇妙なことに、私にはうまくいきません...これは少し前に投稿されたことに気づきましたが、それが問題である場合は奇妙な非難
スーパーヒーロー


5

bashスクリプトで変数を使用する私のバージョン:

バックスラッシュを見つけて、スラッシュに置き換えます。

input="This has a backslash \\"

output=$(echo "$input" | sed 's,\\,/,g')

echo "$output"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.