txtで特定の行数の後に空の行を追加する方法

txtで特定の行数の後に空の行を追加する方法

これはテキストファイルです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

>(はい、これは2つの別々の行です。シェルは最初の行を入力した後にプロンプ​​トを表示します。)

sed -e '12~12a\' -e '' Drives.txt

アドレス指定モードはGNU sedの拡張で、「次のコマンドをオンラインで実行」を意味します。 M~NM それ以降のすべての行  Na''

Steeldriverが指摘したように、0~120行がないので、実際には12行で始まります。

答え3

どの実装でもsed(空の)予約済みスペースを追加して、行の後に改行文字を追加できます。alert :G

sed '/alert *:/G' Drives.txt

ファイルの末尾の空白行が気に入らない場合は、最後の行の$場合は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

関連情報