hdparm 출력에서 ​​일련번호 추출

hdparm 출력에서 ​​일련번호 추출

로그 파일 사용을 자동화 shred하고 출력을 로그 파일에 저장하려고 합니다. 현재 다음을 사용하여 일련번호를 수동으로 복사하고 있습니다.

hdparm -I /dev/sd? | grep 'Serial\ Number'

앞에 있는 "일련번호" 텍스트 대신 번호를 알려주 는 방법이 있다는 것을 알고 있지만 grep방법을 모르겠습니다. 나에게 도움이 될 수 있는 reg 표현식을 아는 사람이 있나요?

답변1

awk대신 시도해 보세요 grep:

hdparm -I /dev/sd? | awk '/Serial Number/ { print $3 }'

또는 기본 공백을 허용하는 대신 구분 기호를 지정하세요.

hdparm -I /dev/sd? | awk -F':' '/Serial Number/ { print $2 }'

답변2

xkcd 기사에서 Perl을 언급했으므로 Perl 솔루션을 살펴보겠습니다.

hdparm -I /dev/sd? | perl -nle '/Serial Number:\s+(.+)$/ && print $1'

awk다른 답변에 있는 솔루션의 Perl 버전:

hdparm -I /dev/sd? | perl -anle '/Serial Number:/ && print $F[2]'

답변3

노력하다

hdparm -I /dev/sd? | grep -oP 'Serial Number:\s*\K.*'

이는 다음을 사용합니다.활성 후면보기필요한 문자열 앞의 패턴을 무시합니다.. 이 경우Serial Number:\s*

답변4

sed?

hdparm -I /dev/sd? | sed -n 's/^.*Serial\ Number:  *\(.*\)$/\1/p'

(sed를 사용하여 이 작업을 수행하는 다른 방법이 많이 있을 수 있습니다. 이것이 제가 좋아하는 방법입니다. 기본 인쇄를 억제하고, 줄의 원하는 부분을 일치시키고, 전체 줄을 그것으로 바꾼 다음 인쇄합니다.)

관련 정보