다음 텍스트 파일이 있습니다.
cat1-home-switch-sw131436 DNI AG3448P-R 2.1.1.1
cat1-home-switch-sw101357 DNI AG3448P-R 2.1.1.1
cat1-home-switch-sw253356 DNI AG3448P-R 2.1.1.1
cat1-home-switch-sw084146 DNI AG3448P-R 2.1.1.1
cat1-home-switch-sw041172 DNI AG3448P-R 2.1.1.1
cat1-home-switch-sw104 Accton 4610-54P 2.1.1.1
cat2-home-switch-sw102 Accton 4610-54P 2.1.1.1
cat5-home-switch-sw101 Accton 4610-54P 2.1.1.1
cat6-home-switch-sw103 Accton 4610-54P 2.1.1.1
cat5-home-switch-sw142311 DNI AG3448P-R 2.1.1.1
cat5-home-switch-sw072212 DNI AG3448P-R 2.1.1.1
cat5-home-switch-sw124376 DNI AG3448P-R 2.1.1.1
cat5-home-switch-sw143318 DNI AG3448P-R 2.1.1.1
cat5-home-switch-sw142313 DNI AG3448P-R 2.1.1.1
원하는 출력
cat1-home-switch-sw104 Accton 4610-54P 2.1.1.1
cat2-home-switch-sw102 Accton 4610-54P 2.1.1.1
cat5-home-switch-sw101 Accton 4610-54P 2.1.1.1
cat6-home-switch-sw103 Accton 4610-54P 2.1.1.1
이 옵션을 사용하여 이 파일을 처리하면 작동합니다.
awk {'인쇄 $1'} | grep -E 'sw[0-9]{3}$'
하지만 다른 모든 열도 유지하고 싶습니다.
답변1
이를 사용하여 \b
단어 경계를 일치시키거나 \>
단어 끝을 일치시킬 수 있습니다.
grep -E 'sw[0-9]{3}\b' file
grep -E 'sw[0-9]{3}\>' file
또는 grep
숫자 뒤의 공백 문자의 경우:
grep -E 'sw[0-9]{3} ' file
답변2
다음 상황 중 하나:
grep "cat.*Accton" file.txt
awk '/cat.*Accton/' file.txt
문자열이 있는 행이 Accton
반환하려는 패턴이 있는 유일한 행이라고 가정합니다.
grep Accton file.txt
awk '/Accton/' file.txt
sw10[0-9] 뒤에 공백을 일치시킬 수도 있습니다.
grep "sw10[0-9] " file.txt
awk '/sw10[0-9] /' file.txt
산출:
cat1-home-switch-sw104 Accton 4610-54P 2.1.1.1
cat2-home-switch-sw102 Accton 4610-54P 2.1.1.1
cat5-home-switch-sw101 Accton 4610-54P 2.1.1.1
cat6-home-switch-sw103 Accton 4610-54P 2.1.1.1
답변3
/sw[0-9]{3}$/
다른 답변도 귀하의 목적에 적합할 수 있지만 행의 첫 번째 필드에서만 일치를 보장하려는 경우 다음을 사용할 수 있습니다 awk
.
awk '$1 ~ /sw[0-9]{3}$/' input_file