まだsedの使い方に取り組んでいますが、以下は非常に簡単な要約です。
文字列の整数を置き換えてx回実行したいです。ユーザーは以下のように "&Page=#&PageSize=#" を使用して文字列を入力します。ここで整数を変更し、変更されるたびにファイルに追加する必要があります。
20601300929&Page=1&PageSize=96
変更すべき内容はとても簡単です。つまり、「Page=1」から「Page=2」に変更されます。整数を増やすカウンタを作成することもできますが、整数を識別して置換するプロセスを自動化し、各カウント変更をテキストファイルに追加する必要があります。
予想される結果は、以下を含む単純なファイルです。
20601300929&Page=1&PageSize=96
20601300929&Page=2&PageSize=96
20601300929&Page=3&PageSize=96
... Until 100
答え1
awkを使用してこれを行うことができます。
echo '20601300929&Page=1&PageSize=96' |
awk -F "Page=" '
{
split($2,a,"&")
for (i=int(a[1]);i<=100;i++){
print $1 FS a[1]++ "&" a[2]
}
}'
フィールド区切り文字がに設定されているため、この例ではそのPage=
フィールドが$2
表示されます。1&PageSize=96
このsplit
ビットは、数字と残りの文字列()に基づいて2番目のフィールドを分割して&
内部に配置します。a[1]
a[2]
PageSize=96
最後に、printステートメントでは、すべてが互いに付着しています。
答え2
たぶん大きな打撃を受けた可能性があります
num=96
counter=1
limit=100
var='20601300929&Page=#&PageSize=#'
while ((counter<=limit)); do
if [[ $var =~ ([^\&]+)(\&[^\&]+)(.+) ]]; then
printf '%s\n' "${BASH_REMATCH[1]}${BASH_REMATCH[2]/\#/$((counter++))}${BASH_REMATCH[3]/\#/$num}"
fi
done