2013-03-20 4 views
0

텍스트에 대해 작업을 수행하기 위해 sed로 놀고있었습니다. 내가 그렇게 출력이되어야한다 그것에 어떤 형식을 추가 할 필요가sed를 사용하여 문자열 사이에 여러 문자열을 추가하십시오.

가가라 a b a e 
블랙 c dd we df 
사무소 as le we 

: 입력 뭔가처럼

id { id: "가가라" } value { val: "a b a e"} word { word: "가가라"} 
id { id: "블랙" } value { val: "c dd we df"} word { word: "블랙"} 
id { id: "사무소" } value { val: "as le we"} word { word: "사무소"} 

문제는 내가 이전과 독침 후 문자열을 추가하는 방법을 알고있다 :

sed 's/^/id \{ id: \"/' 

이의 말에 문자열을 추가

은 문자열의 시작 부분에 문자열을 추가 문자열 : I 각 줄의 끝에서 가라 문자를가 추가하려고 할 때 그러나

sed 's/$/\"\} word \{ word: \"/' 

은 내가 노력이 명령이 작동하지 않았다

또한
sed -r 's/(id\s\{\sid:\s\")([^a-z]*)[\sa-z]{1,10}(\"\}\sword\s\{\sword:\s\")/\1\2\3\2/' 

잘 모르겠어요 문자열가 가라와 aba 사이에 문자열을 추가하는 방법. 나는 정규식을 사용하려고 시도했지만 작동하지 않는 것처럼 보였다.

답변

1

당신의 sed 라인에서, 당신은 패턴과 교체 패턴과 혼동을 느낀 것 같습니다. 예 내가 교체 및 패턴의 개념을 혼동 않았다 ..

kent$ echo "가가라 a b a e 
블랙 c dd we df 
사무소 as le we"|sed -r 's/(\S+)\s*(.*)/id { id: "\1" } value { val: "\2"} word { word: "\1"}/'        
id { id: "가가라" } value { val: "a b a e"} word { word: "가가라"} 
id { id: "블랙" } value { val: "c dd we df"} word { word: "블랙"} 
id { id: "사무소" } value { val: "as le we"} word { word: "사무소"} 
+0

내가 참조 : 데이터와

sed -r 's/(\S+)\s*(.*)/id { id: "\1" } value { val: "\2"} word { word: "\1"}/' file 

시험 :

이 나오지 라인을보십시오. 더 연습해야합니다. XieXie :) –

+0

@ QingshanZhang 환영합니다 .. Bkq ~ – Kent

관련 문제