몇 가지 벤치 마크를 수행했으며 출력은 다음 형식의 여러 결과를 포함하는 단일 파일입니다.
[blaaa] 1st run T/V N NB P Q Time ========================== 2 3 4 1 2 1.02 [blaaaa...] 2nd run T/V N NB P Q Time ========================== 4 42 4 1 2 1.22
다른 실행의 런타임 만 얻고 싶습니다. 그럼 “시간”을 grep하고 다음 열만 인쇄 할 수 있습니까? 아니면 위의 예에 대해
1.02 1.22
만 인쇄 하시겠습니까? blaa 부분없이 세 개의 결과 열만 인쇄하는 것을 선호합니다. : D
Comments
- 당신은 같은 열을 의미하지만 다음은 하나의 line ?
답변
Time
는 항상 여섯 번째 필드에 있습니다.
$ awk "$6 == "Time" {t = NR} t && NR == t+2 {print $6}" file 1.02 1.22
또는 getline
를 두 번 사용할 수 있습니다.-quick “n”dirty :
awk "$6 == "Time" {getline; getline; print $6}" file
( “dirty”는 getline
반환 값을 확인하지 않기 때문입니다.)
댓글
- 또는 항상
$NF
사용 ' 마지막 열 - @Kusalananda 예 좋은 점
답변
$ grep -o "Time\|[0-9\.]\+$" file Time 1.02 Time 1.22 $ grep -o "[0-9\.]\+$" file 1.02 1.22 $ grep -A2 ^T/V file T/V N NB P Q Time ========================== 2 3 4 1 2 1.02 -- T/V N NB P Q Time ========================== 4 42 4 1 2 1.22
결과는 마지막 grep에서 --
로 구분되며 다음으로 제거 할 수 있습니다.
$ grep -A2 ^T/V file | grep -v "^--"
그리고 ====
줄 제거 :
$ grep -A2 ^T/V file | grep -v "^--\|=\+"
답변
, sed
를 시도 할 수도 있습니다.
sed -E "/===*/{N;s/.*([0-9]+\.[0-9]*)/\1/g};t;d" file_name
여기 /===*/
는 ===..
와 일치하고 다음 줄로 이동하여 그 사이에 소수점이있는 부동 소수점 숫자를 찾고 다른 모든 줄을 건너 뛰고 삭제합니다.
다음과 같이 출력됩니다.
1.02 1.22