特定のテキストに注文番号を追加する

特定のテキストに注文番号を追加する

特定のテキストに数字を追加する方法はありますか?私のテキストファイルから:

<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

1つの方法は次のとおりですawk

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

関連情報