아직 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
비트는 숫자와 나머지 문자열( )을 기준으로 두 번째 필드를 분할하여 &
내부에 넣습니다.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