특정 텍스트에 주문 번호 추가

특정 텍스트에 주문 번호 추가

특정 텍스트에 숫자를 추가하는 방법이 있나요? 내 텍스트 파일에서:

<a href="http://localhost/file1.txt">file </a>
<a href="http://localhost/file2.txt">file </a>

<a href="http://localhost/file1.txt">file </a>
<a href="http://localhost/file2.txt">file </a>
<a href="http://localhost/file2.txt">file </a>

<a href="http://localhost/file.1.txt">file </a>
<a href="http://localhost/file.2.txt">file </a>
<a href="http://localhost/file.3.txt">file </a>
<a href="http://localhost/file.4.txt">file </a>

파일에 주문 번호를 추가하고 다음을 출력합니다.

<a href="http://localhost/file1.txt">file 1</a>
<a href="http://localhost/file2.txt">file 2</a>

<a href="http://localhost/file1.txt">file 1</a>
<a href="http://localhost/file2.txt">file 2</a>
<a href="http://localhost/file2.txt">file 3</a>

<a href="http://localhost/file1.txt">file 1</a>
<a href="http://localhost/file2.txt">file 2</a>
<a href="http://localhost/file3.txt">file 3</a>
<a href="http://localhost/file4.txt">file 4</a>

답변1

sed 's|\([^.e]*\).txt">.... |&\1|' <in >out

그리고...당신은 다시 단순화하고 있습니다.

그리고...그것은 또 상황을 복잡하게 만듭니다. 따라서 위 코드는 문자열에 이미 있는 숫자만 복사하며 손상된 숫자는 수정하지 않습니다. 이는 다음을 수행합니다.

{  sed '/./!G;s/\n/::::::&::::/
        s/\(.*[^0-9]\)[0-9][^.]*/\1  /' |
   nl   -d::|
   sed 's/ *\([0-9]*\)\(.*\)  \(.*\) /\2\1\3 \1/'
}  <infile >outfile

사용된 논리적 페이지 구분 기호는 nl개수만 사용됩니다.부분빈 줄로 구분됩니다. 이것은많은하지만 첫 번째 것보다 더 복잡합니다.

상당히 임의적인 경우를 처리하기 위해 약간 확장했습니다.(!짧막 한 농담!)파일 이름.

답변2

한 가지 방법은 다음과 같습니다 awk.

awk '
  !NF { c=0 ; print ; next }
  { sub(/file.*txt/,"file"++c".txt")
    sub(/>file </,">file "c"<")
    print
  }
'

관련 정보