sedコマンドでn回目に出現する文字を置換する方法


linuxのsedコマンドでtest.txtの3番目に出現するLinuxをリナックスに置換したいです。

[code]

    test.txt
        Linux
        Linux
        Linux
        Linux
        Linux
    
[/code]

**私が実行したコマンド**  
`sed -i -e 's/Linux/リナックス/3' test.txt`

しかし実際には全ての行のLinuxがリナックスに置換されてしまいます。

[code]

    test.txt
        リナックス
        リナックス
        リナックス
        リナックス
        リナックス
    
[/code]

どなたか、アドバイスして頂けたら幸いです。

**捕捉**  
置換したい対象は行方向に見ていった時、何行目にあるいか分からないが、  
n番目(この場合は3番目)に出現するLinuxを置換したいというものです。

**置換対象のパターン**  
パターン1  
入力

[code]

    test.txt
        android
        Linux
        windows
        windows
        Linux
        macos
        Linux
        android
        Linux
    
[/code]

出力

[code]

    test.txt
        android
        Linux
        windows
        windows
        Linux
        macos
        リナックス<<3番目に出現したので置換
        android
        Linux
    
[/code]

パターン2  
入力

[code]

    test.txt
        android
        Linux
        windows
        windows
        LinuxLinux
        macos
        Linux
        android
        Linux
    
[/code]

出力

[code]

    test.txt
        android
        Linux
        windows
        windows
        Linuxリナックス<<3番目に出現したので置換
        macos
        Linux
        android
        Linux
    
[/code]

以上、よろしくお願いします。




[rou](https://ja.stackoverflow.com/users/8431/rou)さんの[回答](https://ja.stackoverflow.com/a/42989/25936)を参考にさせていただきました。

[code]

    sed -e '1{; :a; s/Linux/リナックス/3; t; N; ba; }' <test.txt
    
[/code]

1行目ならコマンドブロックを開始します。  
`a`というラベルを設定します。  
3番目のLinuxをリナックスに置換します。  
置換に成功したら末尾へ移動します。  
次の行をパターンスペースへ追加して、`a`というラベルへ移動します。  
コマンドブロックを終了します。




[rou](https://ja.stackoverflow.com/users/8431/rou)さんの[回答](https://ja.stackoverflow.com/a/42989/25936)を参考にさせていただきました。

[code]

    sed -e '1{; :a; s/Linux/リナックス/3; t; N; ba; }' <test.txt
    
[/code]

1行目ならコマンドブロックを開始します。  
`a`というラベルを設定します。  
3番目のLinuxをリナックスに置換します。  
置換に成功したら末尾へ移動します。  
次の行をパターンスペースへ追加して、`a`というラベルへ移動します。  
コマンドブロックを終了します。

