다음 항목 형식의 파일이 있습니다.
$ cat mw.hosts
host23v0242 USER=wsadmin MOUNTPOINT=/web
server21v0243 USER=wsadmin MOUNTPOINT=/web
myser13v0418 USER=wladmin MOUNTPOINT=/web
whatever22v0419 USER=wladmin MOUNTPOINT=/web
....
....
왼쪽에서 두 번째 정수가 "3"인 모든 항목을 grep(나열)하고 싶습니다.
따라서 위의 예에서 원하는 출력은 다음과 같습니다.
host23v0242 USER=wsadmin MOUNTPOINT=/web
myser13v0418 USER=wladmin MOUNTPOINT=/web
보시다시피 두 번째 정수는 "3"과 일치합니다.
뭔가 제안해주실 수 있나요?
답변1
grep '^[^0-9]*[0-9]3' mw.hosts
또는
grep '^[^[:digit:]]*[[:digit:]]3' mw.hosts
또는 (GNU 호환 Perl 정규식 사용 grep -P
):
grep -P '^\D*\d3' mw.hosts
이들 모두는 0개 이상의 숫자가 아닌 문자로 시작하고 그 뒤에 숫자, 가 오는 모든 줄과 일치합니다 3
.
답변2
이 목적으로 awk를 사용할 수도 있습니다.
awk '/[0-9]3v/ { print }' mw.hosts
awk '/[0-9]3v/ { print }' mw.hosts
host23v0242 USER=wsadmin MOUNTPOINT=/web
myser13v0418 USER=wladmin MOUNTPOINT=/web