2012-02-09 2 views
2

파일에서 특정 문자열의 모든 항목을 수정하는 bash 스크립트를 작성하려고합니다.파일에있는 다른 문자열의 모든 항목에 문자열을 추가하는 방법

URL이 들어있는 텍스트 묶음이있는 파일이 있습니다. 모든 URL의 형식은 다음과 같습니다. http://goo.gl/abc23 (goo.gl/ 다음에 4 또는 5 개의 영숫자가옵니다).

내가하고 싶은 것은 모든 URL에 문자열을 추가하는 것입니다. http://goo.gl/abc23http://goo.gl/abc23?AString, http://goo.gl/JB007http://goo.gl/JB007?AString이 될 것입니다.

나는 이것을 지난 3 시간 동안 시도해 왔지만 어디에도 없었습니다. 나는 그렇게 어렵지 않을 것이라고 확신한다.

sed (검색 및 바꾸기) 및 정규식을 사용해 보았지만 문자를에 추가하고 바꾸지는 않습니다. 나는 bash 나 regex에별로 좋지 않다.

아무도 도와 줄 수 있습니까? 어떤 도움이라도 대단히 감사하겠습니다.

+0

어떤 종류의가 있는가 URL 뒤에 구분 기호를 사용 하시겠습니까? – Toto

답변

2

sed을 사용하면 "현재 문자열을 현재 문자열과 다른 문자열로 바꾸는 것"이됩니다. 당신이 (필자는 즉시 하나를 쓰고 싶지 않기 때문에) 모든 URL과 일치하는 몇 가지 정규식이 있다면 그래서, :

sed 's/myregex/&?AString/g' myfile.txt 

을 당신은 myregex 대신에 전체 정규식이있을 것이다. & 문자는 일치하는 문자열 전체를 오른쪽에 넣고 나머지 오른쪽 부분은 ?AString을 추가합니다. 끝에있는 gsed에게 줄의 모든 인스턴스를 첫 번째 인스턴스로 대체하지 말라고 알려줍니다.

perl -pne 's#(http://\S+)#$1?AString#g' input_file 
+0

신난다. 나는 &에 대해 몰랐다. 나는 $와 $ 1 등으로 계속 노력했다. – zigamilek

+0

이제 각 항목마다 다른 문자열을 추가 할 수 있습니까? 매번 다른 문자열을 울리는 함수'generatestring'이 있다고 가정 해 봅시다. 'sed 's/http : \/\/goo.gl \ /...../&? $ (generatestring)/g "'로 호출하면 매번 같은 문자열을 쓸 것입니다. 모든 아이디어가 매번 다른 문자열을 어떻게 쓸 수 있습니까? – zigamilek

+0

@ user1199569 문자열이 추가 할 문자열 (예 : 부분 집합 또는 기타 문자열)에서 파생되지 않으면'sed' 명령을 사용하지 않고 어떻게 작성해야할지 모르겠습니다. 그렇다면'perl'이 갈 길이 될 것입니다. 그것이 말하자면, 그것에 주위에 찌르다 그리고 만약 당신이 그것을 알아낼 수 없다면, 별도의 질문을 게시! ;) –

0

그것을 할 펄 방법,

sed 's/$/?AString/' input.txt 
+0

perl의 경우,'$ 1' 대신'$ &'를 사용하면 캡쳐 괄호가 필요하지 않습니다. –

0

당신은 문자열의 끝을 대체 할 ($를) sed를 사용할 수 있습니다 : URL은 공백으로 끝낼 가정

관련 문제