예를 들어 'E'를 찾을 때마다 변경되는 값을 기반으로 파일에 증분 값을 추가하려고 합니다. (이것은 어떤 값으로 대체될 수 있습니다.) 제가 시도한 일부 온라인 조사에서:
awk '/E/{sub("E", "E"++v)}1' output.txt > output2.txt
하지만 이는 'E' 자체 뒤에 증분 값만 추가합니다. 아니요, 이것은 학교 과제가 아닙니다. 이 데이터는 다음에 해당 값이 ID 필드인 MySQL 테이블에 수집됩니다. 이 파일(매우 큰 버전)은 단어 해독기 애플리케이션을 위해 MySQL 테이블에 수집됩니다.
샘플 파일: output.txt
aaa
aba
acaE
baa
bab
badE
caa
cab
cdeE
ddd
샘플 파일: 원함
1aaa
1aba
1acaE
2baa
2bab
2badE
3caa
3cab
3cdeE
4ddd
답변1
다음과 같이 할 수 있습니다:
awk '{print i $0}; /E$/{i++}' i=1 file
기본적으로 설정 i=1
되어 있지 않기 때문에 초기 값으로 설정합니다 . 그런 다음 해당 줄이 일치하는지 확인 하고 증가합니다 .{print i $0}
i
$0
E
i
αѓsнιι가 제안한 매우 유사한 대안은 다음과 같습니다.
awk '{print i+1 $0}; /E$/{i++}' file
처음에 설정할 필요가 없도록 합산 1
합니다 .i
i=1