특정 변수를 얻으려면 awk를 사용하십시오

특정 변수를 얻으려면 awk를 사용하십시오

나는 이것을 가지고있다file.txt

kespaul   pts/14       2001:778:200:180 Fri May 29 11:33 - 16:40  (00:07)
kespaul   sshd         2001:778:200:180 Fri May 29 16:33 - 16:40  (00:07)
algvai    pts/2        2001:778:200:400 Fri May 29 15:02 - 16:02  (00:00)
algvai    sshd         2001:778:200:400 Fri May 29 16:02 - 16:02  (00:00)

시작 시간이 16이면 새로 만들고 싶습니다. 그래서 내 결과는

kespaul   sshd         2001:778:200:180 Fri May 29 16:33 - 16:40  (00:07)
algvai    sshd         2001:778:200:400 Fri May 29 16:02 - 16:02  (00:00)

awk를 사용하여 시간과 분 값을 얻는 방법만 알고 있습니다.

awk -F ' ' '{print $7}' file.txt

그래서 나는 이것을 얻었다

11:33
16:33
15:02
16:02

답변1

다음과 같이 개별 필드의 패턴 일치를 수행할 수 있습니다.

awk  '$7~/^16/ {print}' file.txt

그러면 7번째 필드를 보고 ^16"16으로 시작"을 의미하는 정규 표현식과 일치하는지 확인합니다. 이 정규식과 일치하는 경우에만 줄을 인쇄합니다.

답변2

특정 작업을 수행할 행을 선택할 수 있습니다. 귀하의 경우: 필드 7 일치를 다음 16:과 같이 수행할 수 있는 경우:

~$ awk '$7 ~/16:/ {print}' file1.txt
kespaul   sshd         2001:778:200:180 Fri May 29 16:33 - 16:40  (00:07)
algvai    sshd         2001:778:200:400 Fri May 29 16:02 - 16:02  (00:00)

관련 정보