재귀

2013-10-18 2 views
2

나는 아래의 문자열을 가진 파일이 나오지 사용하여 문자열을 교체 다음과 같이 출력 :재귀

|""||""||""| 대신 |""|""|""|""|""|

는 나는 이전 라인 ||

감사의 어떠한 사건에 대한이없는 경우에만 다음 라인에 이동 그래서 재귀 적으로 교체 할 sed를 만들 수있는 방법, 반복적으로 교체를 안하고 나오지 발견 당신의 도움.

<temp2.csv sed 's/||/|\"\"|/g' | sed 's/||/|\"\"|/g' 

답변

2

,하지만 귀하의 경우 당신은 두 번째 패스를 만들 수 있습니다.

kent$ cat f 
|||||| 

kent$ sed ':a s/||/|""|/g; t a' f 
|""|""|""|""|""| 
5

가장 똑 바른 앞으로 방법은 두 번 나오지도 대체를 호출 할 것이다 : 내다보기 또는 lookbehind를 지원하지 않습니다 나오지

+0

': a'와'ta'는 무엇을 설명해 주시겠습니까? 's /// '보다 복잡한 어떤 것에도 사용할 수 있습니까? –

-2

은 당신이 할 수있는 awk 사용 : 그것은 작동하기 때문에하지만 난 당신이 말한다면, 나는 재귀 적 데이터와 |""|""|...{n}..|""|

sed ':a s/||/|""|/g; t a' file 

시험에 |||..{n}..|를 교체하려면,이 나오지 한 줄이 더 나은 것 같아요 do :

#echo '||||||' | awk '{gsub(/\|\|/,"|\"\"|")}1' 
|""||""||""| 
+2

결과는 OP의 예상과 같지 않습니다. 질문을 pls 두 번 확인하십시오. – Imagination