이것은 텍스트 파일입니다 Drives.txt
.
Slot Number : 0
Drive's position : DiskGroup 0
Media Error Count : 0
Other Error Count : 0
Predictive Failure Count : 0
Raw Size : 745.211 GB [0x5d26ceb0 Sectors]
Firmware state : Online, Spun Up
Inquiry Data : WDC WUSTR6480ASS200 K95DV6X3NG2A
Foreign State : None
Media Type : Solid State Device
Drive Temperature : 27C (80.60 F)
Drive S.M.A.R.T alert : No
Slot Number : 1
Drive's position : DiskGroup 0
Media Error Count : 0
Other Error Count : 0
Predictive Failure Count : 0
Raw Size : 745.211 GB [0x5d26ceb0 Sectors]
Firmware state : Online, Spun Up
Inquiry Data : WDC WUSTR6480ASS200 K95DV6X3NG2A
Foreign State : None
Media Type : Solid State Device
Drive Temperature : 27C (80.60 F)
Drive S.M.A.R.T alert : No
Slot Number : 2
Drive's position : DiskGroup 0
Media Error Count : 0
Other Error Count : 0
Predictive Failure Count : 0
Raw Size : 745.211 GB [0x5d26ceb0 Sectors]
Firmware state : Online, Spun Up
Inquiry Data : WDC WUSTR6480ASS200 K95DV6X3NG2A
Foreign State : None
Media Type : Solid State Device
Drive Temperature : 27C (80.60 F)
Drive S.M.A.R.T alert : No
진단된 각 드라이브 사이에 공백이 있도록 12번째 줄(예: 12, 24, 36번 줄 등)마다 빈 줄을 추가하고 싶습니다. 어떻게 해야 합니까? bash 스크립트로 구현하고 싶습니다.
출력은 다음과 같아야 합니다.
Slot Number : 0
Drive's position : DiskGroup 0
Media Error Count : 0
Other Error Count : 0
Predictive Failure Count : 0
Raw Size : 745.211 GB [0x5d26ceb0 Sectors]
Firmware state : Online, Spun Up
Inquiry Data : WDC WUSTR6480ASS200 K95DV6X3NG2A
Foreign State : None
Media Type : Solid State Device
Drive Temperature : 27C (80.60 F)
Drive S.M.A.R.T alert : No
Slot Number : 1
Drive's position : DiskGroup 0
Media Error Count : 0
Other Error Count : 0
Predictive Failure Count : 0
Raw Size : 745.211 GB [0x5d26ceb0 Sectors]
Firmware state : Online, Spun Up
Inquiry Data : WDC WUSTR6480ASS200 K95DV6X3NG2A
Foreign State : None
Media Type : Solid State Device
Drive Temperature : 27C (80.60 F)
Drive S.M.A.R.T alert : No
Slot Number : 2
Drive's position : DiskGroup 0
Media Error Count : 0
Other Error Count : 0
Predictive Failure Count : 0
Raw Size : 745.211 GB [0x5d26ceb0 Sectors]
Firmware state : Online, Spun Up
Inquiry Data : WDC WUSTR6480ASS200 K95DV6X3NG2A
Foreign State : None
Media Type : Solid State Device
Drive Temperature : 27C (80.60 F)
Drive S.M.A.R.T alert : No
답변1
자연스러운 핏이에요앗
awk '{print} NR % 12 == 0 {print ""}' Drives.txt
답변2
유형
sed '12~12a\
' Drives.txt
>
(예. 이것은 두 개의 별도 라인입니다. 쉘은 첫 번째 라인을 입력한 후 프롬프트를 표시합니다.) 또는
sed -e '12~12a\' -e '' Drives.txt
주소 지정 모드는 GNU sed의 확장으로, "다음 명령을 온라인으로 실행"을 의미합니다. M~N
M
그 이후의 모든 N
줄". sed의 명령은 a
"줄 추가"를 의미합니다. 일반적으로 삽입할 텍스트를 제공합니다. 빈 줄을 원하기 때문에 를 사용했습니다 ''
.
Steeldriver가 지적했듯이 0~12
0번 줄이 없으므로 실제로는 12번 줄에서 시작합니다.
답변3
어떤 구현에서든 sed
(빈) 예약된 공간을 추가하여 줄 뒤에 개행 문자를 추가할 수 있습니다.alert :
G
sed '/alert *:/G' Drives.txt
파일 끝의 빈 줄이 마음에 들지 않으면 마지막 줄(address $
) 의 경우 P
개행 앞 부분을 인쇄하고 d
해당 줄을 삭제하세요.
sed '/alert *:/G;$P;$d' Drives.txt
답변4
awk 'NR%12 == 0 {$0=$0"\n"}1' file.txt
산출
Slot Number : 0
Drive's position : DiskGroup 0
Media Error Count : 0
Other Error Count : 0
Predictive Failure Count : 0
Raw Size : 745.211 GB [0x5d26ceb0 Sectors]
Firmware state : Online, Spun Up
Inquiry Data : WDC WUSTR6480ASS200 K95DV6X3NG2A
Foreign State : None
Media Type : Solid State Device
Drive Temperature : 27C (80.60 F)
Drive S.M.A.R.T alert : No
Slot Number : 1
Drive's position : DiskGroup 0
Media Error Count : 0
Other Error Count : 0
Predictive Failure Count : 0
Raw Size : 745.211 GB [0x5d26ceb0 Sectors]
Firmware state : Online, Spun Up
Inquiry Data : WDC WUSTR6480ASS200 K95DV6X3NG2A
Foreign State : None
Media Type : Solid State Device
Drive Temperature : 27C (80.60 F)
Drive S.M.A.R.T alert : No
Slot Number : 2
Drive's position : DiskGroup 0
Media Error Count : 0
Other Error Count : 0
Predictive Failure Count : 0
Raw Size : 745.211 GB [0x5d26ceb0 Sectors]
Firmware state : Online, Spun Up
Inquiry Data : WDC WUSTR6480ASS200 K95DV6X3NG2A
Foreign State : None
Media Type : Solid State Device
Drive Temperature : 27C (80.60 F)
Drive S.M.A.R.T alert : No