나는 아래의 문자열을 가진 파일이 나오지 사용하여 문자열을 교체 다음과 같이 출력 :재귀
|""||""||""|
대신 |""|""|""|""|""|
는 나는 이전 라인 ||
감사의 어떠한 사건에 대한이없는 경우에만 다음 라인에 이동 그래서 재귀 적으로 교체 할 sed를 만들 수있는 방법, 반복적으로 교체를 안하고 나오지 발견 당신의 도움.
<temp2.csv sed 's/||/|\"\"|/g' | sed 's/||/|\"\"|/g'
나는 아래의 문자열을 가진 파일이 나오지 사용하여 문자열을 교체 다음과 같이 출력 :재귀
|""||""||""|
대신 |""|""|""|""|""|
는 나는 이전 라인 ||
감사의 어떠한 사건에 대한이없는 경우에만 다음 라인에 이동 그래서 재귀 적으로 교체 할 sed를 만들 수있는 방법, 반복적으로 교체를 안하고 나오지 발견 당신의 도움.
<temp2.csv sed 's/||/|\"\"|/g' | sed 's/||/|\"\"|/g'
,하지만 귀하의 경우 당신은 두 번째 패스를 만들 수 있습니다.
kent$ cat f
||||||
kent$ sed ':a s/||/|""|/g; t a' f
|""|""|""|""|""|
가장 똑 바른 앞으로 방법은 두 번 나오지도 대체를 호출 할 것이다 : 내다보기 또는 lookbehind를 지원하지 않습니다 나오지
은 당신이 할 수있는 awk
사용 : 그것은 작동하기 때문에하지만 난 당신이 말한다면, 나는 재귀 적 데이터와 |""|""|...{n}..|""|
sed ':a s/||/|""|/g; t a' file
시험에 |||..{n}..|
를 교체하려면,이 나오지 한 줄이 더 나은 것 같아요 do :
#echo '||||||' | awk '{gsub(/\|\|/,"|\"\"|")}1'
|""||""||""|
결과는 OP의 예상과 같지 않습니다. 질문을 pls 두 번 확인하십시오. – Imagination
': a'와'ta'는 무엇을 설명해 주시겠습니까? 's /// '보다 복잡한 어떤 것에도 사용할 수 있습니까? –