2014-04-17 2 views
0

특정 문자열을 줄 끝으로 이동해야하지만 어떻게해야할지 모릅니다. 여기 예가 있습니다 :문자열을 찾아 줄 끝으로 이동

:88:Some text/Some text/Some text/**TEXT TO MOVE**/Some textSome text/Some text/Some textSome text/ 

:29:Some textSome text/**TEXT TO MOVE**/Some textSome text/Some text/Some text/ 

... 

슬래시 사이의 "일부 텍스트"는 줄마다 다릅니다. 각 행은 항상 "/"로 끝나며 ": xx :"로 시작하며 x는 일부 숫자입니다.

나를 도울 수있는 사람이 있습니까?

+0

"슬래시 사이"를 입력해야한다고 생각합니다. 슬래시를 구분 기호로 사용하여 해당 행을 개별 구성 요소로 파싱하는 것은 어떻습니까? 그런 다음 구성 요소를 다시 다른 순서로 배치 할 수 있습니다. – spencer7593

+0

'**'TEXT TO MOVE **'이전 또는 이후의'/'의 숫자는 각 줄마다 다르거 나 두 번째 줄에 오타가 있습니까 (': 29 : SometextSometext /')? ** ** 텍스트는 움직입니다 ** '는 항상 같은가요? –

+0

나는 무슨 일이 일어 났는지 모르겠다. 누군가 좋은 답변을 썼다. 몇 분 전에 답은 사라졌다. 모든 것이 지금 일하고 있습니다. 고마워요! 대답은 다음과 같습니다. sed 's! (/ TEXT TO MOVE /) (. *) /! \ 2 \ 1! ' input – wgradz

답변

0

당신은 항상 **TEXT TO MOVE**의 오른쪽에 필드 같은 수의 가정, 당신은이 작업을 수행 할 수 있습니다

$ echo -e ':88:Some text/Some text/Some text/**TEXT TO MOVE**/Some textSome text/Some text/Some textSome text/ 
:29:Some textSome text/**TEXT TO MOVE**/Some textSome text/Some text/Some text/' \ 
| awk -F'/' ' 
    { 
     for (i = 1; i <= NF - 5; i++) { 
     printf("%s/", $i) 
     } 
     printf("%s/%s/%s/", $(NF - 3), $(NF - 2), $(NF - 1)); 
     print $(NF - 4) "/" 
}' 
:88:Some text/Some text/Some text/Some textSome text/Some text/Some textSome text/**TEXT TO MOVE**/ 
:29:Some textSome text/Some textSome text/Some text/Some text/**TEXT TO MOVE**/ 
0

이에 상관없이 메타 문자는 문자열을 이동에 포함 된 RE 무엇을 작동하지 않습니다 문자열이 아닌 RE에서 작동하기 때문에 :

$ cat file 
Some text/Some text/**TEXT TO MOVE**/Some text/Some text/ 
Some text/**TEXT TO MOVE**/Some textSome text/ 

$ awk -v str='**TEXT TO MOVE**' 's=index($0,str){$0 = substr($0,1,s-1) substr($0,s+length(str)) str }1' file 
Some text/Some text//Some text/Some text/**TEXT TO MOVE** 
Some text//Some textSome text/**TEXT TO MOVE** 
+0

좋은 접근! ** ** TEXT TO MOVE **'는 일정하지 않을 수도 있습니다. 이중 슬래시를 피하기 위해'subsrt' 시작과 끝을 조정할 수 있습니다. 나는 OP가'/'를 필드 구분 기호로 사용하기를 원한다고 가정합니다. –

+0

OP가 아무 것도 추가하고 싶다면, 그냥 str에 추가해야합니다. 예상 된 결과가 없으면 우리는 단지 그것을 추측하고 있습니다. –

관련 문제