각 해시 기호 뒤에 141부터 시작하는 시퀀스 번호를 추가하려면 어떻게 해야 합니까?

각 해시 기호 뒤에 141부터 시작하는 시퀀스 번호를 추가하려면 어떻게 해야 합니까?

프로그래밍 방식으로 이 텍스트 파일을 변경하는 방법

put returns between paragraphs#
20170218
for linebreak add 2 spaces at end# blah
_italic_ or **bold**#
20170219
20170220#
201702#21

이 문제를 해결하려면 sed와 같은 도구를 사용하시겠습니까?

put returns between paragraphs#141
20170218
for linebreak add 2 spaces at end#142 blah
_italic_ or **bold**#143
20170219
20170220#144
201702#14521

답변1

sed는 기술적으로 가능하지만(튜링 완전) sed에는 산술 연산이 없기 때문에 매우 어렵습니다. 이것이 awk의 일이다.

각 줄의 첫 번째 줄만 바꾸려면 바꾸기 뒤에 숫자를 증가시키 #라고 지시하면 됩니다 . awk는 정수를 문자열의 십진수 표현으로 자동 변환합니다.##

awk -v n=141 '/#/ {sub(/#/, "#" (++n))}'

모든 문자를 바꾸려면 #가장 쉬운 방법은 #필드 구분 기호를 만들고 첫 번째 필드를 제외한 각 필드의 시작 부분에 숫자를 추가하는 것입니다.

awk -v n=141 -F '#' '{for (i=2; i<=NF; i++) $i = (++n) $i}'

답변2

< yourfile perl -slpe 's/#/$&.$k++/e' -- -k=141

편집을 수행하는 데에도 사용할 수 있습니다.

관련 정보