일부 텍스트를 증분 값으로 대체하고 싶습니다. 고려 파일 XX :sed 증분 번호
<outro>dfdfd</outro>
<RecordID>1</RecordID>
<outro>dfdfd</outro>
<RecordID>1</RecordID>
<outro>dfdfd</outro>
<RecordID>1</RecordID>
<outro>dfdfd</outro>
와 sed 명령 : echo $n
명령이 증가되지 않습니다
for n in seq 3;do sed -e 's/<RecordID>\d/<RecordID>'`echo $n`'/' xx; done
. 또한
Tryed :
n=1; sed -e 's/<RecordID>/<RecordID>'`echo $n ;let n=$n+1`'/g' xx
하지만 성공
.만 내가 같이 증가 recordId는 필드가 할 수있는 방법 (더 AWK 또는 펄) 나오지도 않습니다을 것으로 생각 :
<outro>dfdfd</outro>
<RecordID>1</RecordID>
<outro>dfdfd</outro>
<RecordID>2</RecordID>
<outro>dfdfd</outro>
<RecordID>3</RecordID>
<outro>dfdfd</outro>
이 모든 것은'sed '로 인해 매우 혼란 스럽습니다. 왜냐하면 쉘에서 그것의 외부로 증가시켜야하고 각 라인에 대해 sed의 한 인스턴스를 호출해야하기 때문입니다. 이것은 단지 학업적인 목적이라면, 괜찮아요.하지만 그것은 수학 출생을 할 수 있기 때문에 정말로 'awk'를 사용해야합니다. 사실, 전체 awk 스크립트는이 짧은 줄입니다. awk/RecordID/{sub ("[0-9] +", ++ i)} 1 infile> outfile' – SiegeX
@SiegeX : 전제 sed는 그 일에 맞는 도구가 아닙니다. 레코드 ID가 파일에서 순서대로 표시되지 않는다고 가정 해 봅시다 - 예제에서는 순서대로 보여줍니다. 그러나 숫자가 반드시 단조롭게 증가하거나 순차적으로 나타나는 것은 분명하지 않습니다 ... 'awk'가 캡처를 처리하고 라인의 일부 수정? 나의 의심은 '아주 쉽지 않다'; 그 시점에서 필자는 Perl로 향했다. (비록 내가 Python을 Perl에 완전히 적합한 대안으로 받아들이 겠지만 - 나는 단지 Perl을 Python보다 더 잘 알고있다.) 어떤 전망? –
@Jonathan awk로 무언가를 잘못하고 싶을 때, 일반적으로 연관 배열을 사용해야한다. 그리고 조금 어색한 (아무 말장련도 의도하지 않음) 수 있지만 분명히 "아주 쉽게"카테고리에 넣지 않을 것입니다. O/P의 입력이 어떻게 변화하는지 알고 싶지는 않지만, awk의 연관 배열을 철저히 사용하여 예를 들어 보았습니다. http://stackoverflow.com/questions/4443583/bash-scripts-that-analytics-reports-files/4445671 # 4445671 – SiegeX