特定のテキストに数字を追加する方法はありますか?私のテキストファイルから:
<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
}
'