2013-05-24 4 views
0

나는 단어 review 후 라인에 번호를 추가하는 명령 줄, 펄 등을 통한 방법이 있나요 내 파일 backup.xml각 줄에 새 번호를 추가하는 방법은 무엇입니까?

my-company-review/</link> 

의 500 배에 대한이 라인을 가지고있다. 예를 들어,이 같은 : 도움에 미리

my-company-review1/</link> 
my-company-review2/</link> 
my-company-review3/</link> 

감사합니다!

답변

0

왜를 Perl을 사용하라. 나는 당신의 la와 함께 제안했다. st 문제. 다시 한번 말하지만, 이것은 일종의 해킹 해결책입니다. 이것은 한 줄에 최대 하나의 대체 코드가있는 경우에만 작동합니다 ... 그러나 그것은 빠른 폐기 프로그램입니다.

perl -e '$count=1; foreach (<>) { s/(my-company-review)(\/<\/link>)/$1$count$2/ && $count++; print; }' 

여분의 루프 라인에서 여러 대체를 수행합니다 AWK 솔루션 방법 좋네요 =)

+0

실제로 바로 위의 질문에 대해 완벽하게 작동했습니다. 방금 my-company-review에'review'라는 단어 뒤에 숫자를 추가하려고 시도했지만 번호가 추가되지 않았습니다. 이것은 내가 입력 한 것입니다 :'perl -e '$ count = 1; foreach (<>) {s/(my-company-review) (\/)/$ 1 $ count $ 2/&& $ count ++; 인쇄; } 'backup.xml> newfile.xml' 오류는 없었지만 출력 파일은 원본 파일과 정확히 같았습니다 ... – user2410854

+0

정규 표현식에 태그 앞에'\/'가 있기 때문에. 그것을 꺼내면 효과가 있습니다. – paddy

0

여기에 한 가지 방법입니다 :

perl -i -wpe ' BEGIN { $count = 1; } 
       ++$count 
       if s{(my-company-review)(/</link>)}{$1$count$2}; 
      ' backup.xml 

(면책 조항 :. 테스트하지)

0
당신은 AWK 사용할 수 있습니다

:

awk 'gsub("/</link>", NR "/</link>")' infile 

또는 펄 :

perl -ne 's:/</link>:$./</link>:; print' infile 
+0

당신이 여러 사본이있는 경우이 같은 번호로 대체됩니다 보이는

perl -e '$count=1; foreach (<>) { while(s/(my-company-review)(\/<\/link>)/$1$count$2/) {$count++;} print; }' 

그건 같은 줄. 아마도 다른 레코드 구분 기호를 찾아야 할 필요가 있을까요? – paddy

관련 문제