그래서 나는 다음과 같은 항목이 포함 된 로그 파일이 명령 행에정규식 도움이
[STAT] - December 11, 2017 13:16:05.360
.\something.cpp(99): [Text] Code::Open Port 1, baud 9600, parity 0, Stop bits 0, flow control 0
[STAT] - December 11, 2017 13:20:24.637
.\something\more\code.cpp(100): [log]
fooBarBaz[32] = 32, 1, 2, 7, 3, 1092, 5, 196875, 6, 270592, 20, 196870, 8, 289, 30, 196867, 11, 1156, 5, 196875, 28, 278784, 5, 196874, 32, 266496, 30, 6866, 36, 147712, 5, 196874,
[STAT] - December 11, 2017 13:20:40.939
.\something\more\code.cpp(100): [log]
fooBarBaz[8] = 8, 1, 2, 1, 31, 532992, 5, 196875,
[STAT] - December 11, 2017 13:18:16.214
.\something\more\code.cpp(100): [log]
fooBarBaz[12] = 12, 1, 2, 2, 17, 296960, 10, 196872, 51, 1792, 50, 196878,
를,이 작업을 수행 할 수 있습니다와 같은 출력을 생성
gawk -F', *' '/fooBarBaz\[[^0].*\]/ {for (f=5; f<=NF; f+=4) print $f | "sort -n" }' log
이 :
3
6
8
11
17
28
31
32
36
51
나는 같은 일을 awk 스크립트를하고 싶습니다,하지만 내 노력은 지금까지하지 는 일이있다.
#!/usr/local/bin/gawk -f
BEGIN { print "lines"
FS=", *";
/fooBarBaz\[[^0].*\]/
}
{
{for (f=5; f<=NF; f+=4) print $f}
}
나는 내 정규 표현식 문, 올바른 장소에 내 데이터에 있기 때문에 관련 실행 둔한 -f script.awk 인쇄 라인하지 생각하지 않습니다.
내가 뭘 잘못하고 있니?
tl; dr : fooBarBaz가 있고 [0]이 아닌 행에서 5 행부터 시작하여 4 행을 끝까지 구문 분석하려고합니다. GNU 최적화
정규 표현식은 BEGIN 문이 아닌 두 번째'{'앞에 있어야합니다. – kvantour
begin 문 밖으로 이동하면 여전히 \ something.cpp에있는 데이터가 선택됩니다. '흐름 제어 0 '은 5 번째 쉼표가되지만 그 점에 대해서는 신경 쓰지 않습니다. –
리팩터링 된 스크립트는 다른 순서로 표현식이있는 것 같아서 정렬 할 파이프가 부족합니다. 왜 당신은 그것이 같은 결과를 가져올 것이라고 기대합니까? 질문 [편집]으로 수정할 수있는 복사/붙여 넣기 오류가 있습니까? – tripleee