2012-10-24 2 views
56

이것은 쉽습니다. sed을 입력 파일이 아닌 리터럴 문자열에 대해 실행하고 싶습니다. 이유가 궁금하다면, 예를 들어 텍스트 데이터가 아닌 변수에 저장된 값을 편집하는 것입니다.리터럴 문자열로 sed - 입력 파일이 아님

내가 할 경우 :

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

를 A, B, C 나 C

내가

Can't open A,B,C 
를 얻을 수 ',' ','A로 변경 B를 원하는 문자 그대로입니다

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로 파일을 기대하기 때문에 , 표준 (들)

편집 : 당신이 이나 다른 것들을 사용하는 경우

가 : 당신 같은

echo string | sed ... 
6

작품을 원하는 : A의

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

내 버전을 사용하여 변수를 bash 스크립트 :

백 슬래시로 바꾸고 슬래시로 바꾸십시오.

input="This has a backslash \\" 

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

echo "$output" 
관련 문제