로그 파일 사용을 자동화 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를 사용하여 이 작업을 수행하는 다른 방법이 많이 있을 수 있습니다. 이것이 제가 좋아하는 방법입니다. 기본 인쇄를 억제하고, 줄의 원하는 부분을 일치시키고, 전체 줄을 그것으로 바꾼 다음 인쇄합니다.)