프로그래밍 방식으로 이 텍스트 파일을 변경하는 방법
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
편집을 수행하는 데에도 사용할 수 있습니다.