텍스트 파일의 문자열에 연속된 숫자 추가(동일한 숫자 쌍)

텍스트 파일의 문자열에 연속된 숫자 추가(동일한 숫자 쌍)

두 문자열이 각각 동일한 숫자를 갖는 텍스트 파일의 문자열에 연속 숫자를 추가하는 방법은 무엇입니까?

예:

id="picture-"
id="picture-"
id="picture-"
id="picture-"
...

결과:

id="picture-1"
id="picture-1"
id="picture-2"
id="picture-2"
...

번호가 줄의 마지막 위치에 없습니다. 나는 이것을 시도했습니다 :

perl -pe 's/picture\-/$& . ++$n/ge' index.txt

하지만 이렇게 하면 숫자가 더해지며 각 문자열에 대해 다른 숫자를 얻게 됩니다.

어떤 도움이라도 대단히 감사하겠습니다.

답변1

언제든지 다음과 같이 할 수 있습니다.

perl -pe 's/picture-\K/1+($n++>>1)/ge' index.txt

처음부터 데이터를 생성하려면:

seq -f 'id="picture-%.0f"' 10 | sed p

답변2

perl문장을 약간 수정하면 다음과 같습니다.

perl -mPOSIX -pe 's/picture\-/$& . POSIX::ceil(++$n\/2)/ge' index.txt

추가된 숫자는 이제 반올림된 n이므로 결과는 한 행씩 걸러서만 증가됩니다.

답변3

$ awk -F '"' 'BEGIN { OFS=FS; n=1 } { $2 = sprintf("%s%d", $2, ++n/2); print }' file
id="picture-1"
id="picture-1"
id="picture-2"
id="picture-2"

"여기서는 각 행을 -구분된 필드 집합으로 처리합니다 . 두 번째 필드 끝에 정수를 추가하여 수정하세요 awk. 정수는 각 행마다 1씩 증가하지만 2로 나누어지기도 합니다. 결과적으로 출력의 숫자는 매 두 번째 줄마다 1씩 증가합니다(형식에서 숫자를 사용할 때의 반올림으로 인해 %d) sprintf().

답변4

for 루프를 사용하겠습니다.

가정:

  • 생성할 최대 항목 수를 알고 있습니다.
  • 접두사는 변경되지 않습니다.
  • 귀하의 출력은 단지 "접두사 번호"입니다.
#!/bin/sh

# Define constants
prefix="picture-"
max_count=30

# For/Next style loop
for i in ((i=1;i<=$max_count;i++))
do
    echo "${prefix}${i}"
end

관련 정보