2014-07-27 4 views
4

jSON 메시지의 "전자 메일 주소"차이를 소문자로 변경하고 싶습니다. 나는 sed를 사용하려했지만 실패했다. 왜냐하면 \ L 옵션은 나를 위해 작동하지 않기 때문이다. 내가 뭐 놓친 거 없니?Sed는 대문자를 소문자로 변환 할 수 없습니다.

a="{"id":null,"enabled":true,"password":"","email":"[email protected]","lastName":"Foo","firstName":"lol"}" 
echo $a | sed -e 's/email:[[:graph:]].*,last/\L&/g' 

결과는 보여줍니다

{id:null,enabled:true,password:,{L}email:[email protected],lastName:Foo,firstName:lol} 

내가 원하는 그 결과 당신이 GNU이 나오지 따라서 \L에 액세스 할 수없는이없는 것으로 가정 할 것입니다

{id:null,enabled:true,password:,email:[email protected],lastName:Foo,firstName:lol} 
+0

입니다. 어떤 OS와 어떤 버전의'sed'를 사용하고 있는지 지정할 수 있습니다. – John1024

+0

아마도 OSX 일 겁니다. – konsolebox

+1

GNU sed를 사용하고 있습니까? 코드는 GNU sed 버전 4.2.1에서 작동합니다. 사용중인 버전을 확인하려면 sed --version – toddlermenot

답변

3

. 대신, 펄을 시도 :

여기
echo "$a" | perl -pe 's/(email:[[:graph:]]*,last)/\L\1/' 
+0

트릭을 수행합니다! 안녕! – SexyNerd

1

당신의 코드는 나를 위해 작동하는 awk

awk -F, '{for (i=1;i<=NF;i++) if ($i~/email/) $i=tolower($i)}1' <<< "$a" 
{id:null enabled:true password: email:[email protected] lastName:Foo firstName:lol} 
+0

awk에 익숙하지 않지만, 위의 스크립트는 작동합니다. – SexyNerd

+0

@lifeGoGoGo'awk'는 파일을 조작하기에 너무 강력합니다. 나는 당신이 그것을 시도하는 것이 좋습니다. – Jotne

관련 문제