특정 텍스트에 숫자를 추가하는 방법이 있나요? 내 텍스트 파일에서:
<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
}
'