문자열을 순차 카운터로 교체하여 각 새 줄에서 카운터를 재설정합니다.

문자열을 순차 카운터로 교체하여 각 새 줄에서 카운터를 재설정합니다.

파일 텍스트가 있습니다(이름이 색인화되어 있음).

Variazione su Eraclito, <link-1262>§§§</link>
vecchio e il mare, <link-715>§§§</link>, <link-895>§§§</link>, <link-104>§§§</link> 
vento tra i salici, <link-355>§§§</link>
vergine e lo zingaro, <link-459>§§§</link>, <link-1564>§§§</link>

<link-...>§§§</link>의 내용에 §§§ 대신에 다음과 같이 프로그레시브 숫자를 추가해야 했습니다.

Variazione su Eraclito, <link-1262>1</link>
vecchio e il mare, <link-715>1</link>, <link-895>2</link>, <link-104>3</link> 
vento tra i salici, <link-355>1</link>
vergine e lo zingaro, <link-459>1</link>, <link-1564>2</link>

답변1

방법은 다음과 같습니다 awk.

awk 'c=0;{while(match($0, /§§§/) > 0){c++;sub(/§§§/, c, $0)}};1' infile

카운터 를 설정 c하고 §§§행에 카운터 값이 포함되어 있는 한 각 항목을 카운터 값으로 대체하고 각 대체 전에 후자를 증가시킵니다.§§§c

답변2

그리고 perl:

perl -pe '$n = 0; s/§§§/++$n/ge' < file

파일을 수정하려면:

perl -i -pe '$n = 0; s/§§§/++$n/ge' file

관련 정보