아래와 같은 오류 메시지가 포함된 파일이 있습니다.
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1505)
rsync error: error in rsync protocol data stream (code 12) at token.c(604)
예를 들어 첫 번째 줄에서는 23, 두 번째 줄에서는 12와 같이 코드 번호를 추출하고 싶습니다.
답변1
좋다
$ grep -o "(code [0-9]*" file | cut -d" " -f2
23
12
?
답변2
awk를 사용하면 다양한 방법으로 숫자를 추출할 수 있습니다. 아래 스크립트에서는 다음 패턴이 나타날 것으로 예상합니다.
- 공간
(
- 끈
code
- 공간
- 일련의 숫자
)
- 공간
...완전한 것은 아니므로 string으로 시작하는 줄로 일치 항목을 제한하여 범위를 더 제한해 보았습니다 rsync error:
.
코드 의 나머지 부분은 print
선행 및 후행 텍스트를 고려하여 문자열 길이 매개변수를 조정합니다.
awk '/^rsync error: .* \(code [[:digit:]]+\) / \
{
match($0, " \\(code [[:digit:]]+\\) ");
print substr($0, RSTART + 7, RLENGTH - 9) ;
}' input