sed 명령에서 문자열을 구문 분석하려고 하는데 오류가 발생합니다.
sed -e "/pd begin $(echo 3:1I:1:1|sed 0,/:/{s/:/' '/})",/pd end $(echo 3:1I:1:1|sed 0,/:/{s/:/' '/})/p /tmp/hp-raid-data-harvester.out
문자열 "3:1I:1:1"의 첫 번째 ":"를 바꿔야 합니다. 연속으로 있어야 하며 이전에는 변경할 수 없습니다. 문자열은 데이터베이스의 문자열 $1에서 가져옵니다.
hp-raid-data 파일은 다음 줄에 있습니다.
### pd begin 3 2I:1:1 ###
Smart Array P410 in Slot 0
array B
physicaldrive 2I:1:1
Port: 2I
Box: 1
Bay: 4
Status: OK
Drive Type: Data Drive
Interface Type: SATA
Size: 3 TB
Rotational Speed: 7200
Firmware Revision: CC4H
Serial Number: Z1F21GLG
Model: ATA ST3000DM001-9YN1
SATA NCQ Capable: True
SATA NCQ Enabled: True
Current Temperature (C): 33
Maximum Temperature (C): 42
PHY Count: 1
PHY Transfer Rate: 3.0Gbps
### pd end 3 2I:1:1 ###
답변1
/
쉼표 앞에 정규식을 끝내려면 구분 기호 가 필요합니다 . 그리고 sed
두 정규식 모두 공백이 있으므로 전체 표현식 매개변수 주위에 따옴표가 필요합니다 .
sed -e "/pd begin $(echo 3:1I:1:1|sed 0,/:/{s/:/' '/})/,/pd end $(echo 3:1I:1:1|sed 0,/:/{s/:/' '/})/p" /tmp/hp-raid-data-harvester.out
^ ^