Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。2,839件5linuxのsedコマンドでtest.txtの3番目に出現するLinuxをリナックスに置換したいです。test.txtしかし実際には全ての行のLinuxがリナックスに置換されてしまいます。リナックスどなたか、アドバイスして頂けたら幸いです。置換したい対象は行方向に見ていった時、何行目にあるいか分からないが、n番目(この場合は3番目)に出現するLinuxを置換したいというものです。Linux以上、よろしくお願いします。2:021ちなみに、質問者さんが実行したコマンドは、「全ての行において、その行の3番目に出現する"Linux"」です。1行に1つの"Linux"しかありませんから、置換は起こらないはずです(手元で確認しました)。何か操作を間違っているかも知れませんね。Inoueさんの回答がこれに当ります)。2:461はい、置換の対象は3の「入力全体を通じて、n番目に出現するLinux」という事になります。伝わりずらい文章で申し訳ないです。4:261希望の動作が見えやすいよう、サンプルのテキストを見直してもらった方がよいかなと思います(できれば複数例)。全部同じ行だとコメントが付いている様に意図が伝わりづらいです。票5rouさんの回答を参考にさせていただきました。<test.txt1行目ならコマンドブロックを開始します。aというラベルを設定します。3番目のLinuxをリナックスに置換します。置換に成功したら末尾へ移動します。次の行をパターンスペースへ追加して、aというラベルへ移動します。コマンドブロックを終了します。|33番目(=3行目)だけ置換する場合は以下を実行してみてください。'3s/Linux/リナックス/'3行目~5行目、などのように範囲指定をする場合は以下になります。複数行を同時にパターンスペースに読み込む必要があります。ba1~4行目と5~9行目が別ブロックになっています。アドレス指定により、ファイルの最初の行には5~9行目だけが適用されます。5~9行目はループになっており、3番目のLinuxの置換処理が成功すれば7行目から抜けます。見つからなければ8行目でファイルの次行を読み込み、マッチするまで繰り返します。置換処理が完了した後は、残りの行に1~4行目が適用されます。入力行を加工せず出力するだけです。test.txtだと思います。どちらも受け付けるので試してみてください。5:56そうだったのですか。こちらの不勉強で申し訳ありません。オプションを利用できます。行単位ではなく標準入力全体を対象に処理が可能です。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。