후행 숫자를 증가하는 숫자로 변경하는 방법

후행 숫자를 증가하는 숫자로 변경하는 방법

저는 ArchLinux 4.1.6-1과 bash 4.3을 사용하고 있습니다.

200개가 넘는 산업용 로봇의 여러 프로그램을 정리해야 해서 다리 작업을 자동화하려고 합니다.

원본 파일과 동일한 순서로 좌표 참조 목록으로 파일을 제거하고 다음과 같이 bash, 등을 sed혼합 할 수 있습니다.headtail

via15
via25
via35
via3
via4
via5
p0584_62284
via43

via1부터 시작하여 증가하는 일련의 숫자를 포함하는 줄의 후행 숫자를 다음과 같이 변경해야 합니다.

via1
via2
via3
via4
via5
via6
p0584_62284
via7

저는 로봇 프로그래머이고 간단한 sed정규식만 관리할 수 있지만, 이를 사용하면 awk자전거를 탄 물고기와 같습니다.

답변1

$ awk '/via/{$0="via" ++n};1' file
via1
via2
via3
via4
via5
via6
p0584_62284
via7

어떻게 작동하나요?

  • /via/{$0="via" ++n}

    줄에 가 포함되어 있으면 via"via"로 바꾸고 그 뒤에 n. 이 작업을 수행할 때마다 주요 ++원인이 증가합니다. awk가 전체 줄을 인용하는 방법.n$0

  • 1

    이것은 awk로 라인을 인쇄하는 데 대한 비밀스러운 약어입니다.

    구체적으로 말하면 1true로 평가되는 조건입니다. 지정된 작업이 없으므로 다음 줄을 인쇄하는 기본 작업이 수행됩니다 print $0. 그러므로 lone은 1라인을 인쇄하는 것을 줄여서 표현한 것입니다.

보다 선택적인 접근 방식

via우리가 한 줄에 이 세 글자가 나타날 가능성이 있나요 ?아니요변화하고 싶나요? 그렇다면 어떤 줄을 변경할지 좀 더 선택적으로 선택해야 합니다. viaand 로 시작하고 뒤에 숫자만 오는 줄만 변경하려면 viaNeronLeVelu가 주석에서 제안한 것처럼 더 제한적인 정규식을 사용해야 합니다 ^via[0-9]+$. 예를 들어 다음과 같습니다.

awk '/^via[0-9]+$/{$0="via" ++n};1' file

관련 정보