2012-10-24 2 views
56

これは簡単です。sedを入力ファイルではなくリテラル文字列に対して実行します。理由がわからないのであれば、それは例えば変数に格納されている値を編集することであり、必ずしもテキストデータである必要はありません。リテラル文字列でsed - 入力ファイルではない

私は:

A、B、Cは、私がAに変更したいリテラルである
sed 's/,/','/g' "A,B,C" 

' 'B'、' C

私は

Can't open A,B,C 
を取得

A、B、Cはファイルだと思っているようです。

私はそれがエコーへの配管を試みた:

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

私はプロンプトを取得します。

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

答えて

85

あなたは、単一引用符が競合しているので、使用:

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

を使用している場合は、あなたがあまりにも行うことができます(<<<here-stringです):

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

なく

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

sedがarguとしてファイルを期待しているためMENT(S)

EDIT:あなたが望むような

echo string | sed ... 
6

作品:

内の変数を使用して
echo "A,B,C" | sed s/,/\',\'/g 
2

マイバージョン

あなたはやその他のものを使用している場合bashスクリプト:

バックスラッシュで置換え、スラッシュで置き換えます。

input="This has a backslash \\" 

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

echo "$output" 
関連する問題