私はここで他の質問を調査しましたが、私に役立つ質問は実際には見つかりませんでした。ファイルから特定の行を選択し、その行の文字列を別の文字列に置き換えようとしています。だから私はmy_courseという名前のファイルを持っています。my_courseの「123」で始まる行を変更しようとしています。その行で、文字列「0」を「1」に置き換えたいと思います。ヘルプ?
2 に答える
1つの可能性はsedを使用することです:
sed '/^123/ s/0/1/' my_course
最初の部分では、123で始まる行を
/../
探しているパターンを指定する必要があります。^123
部分で、
s/from/to/
実行する置換を指定します。
デフォルトでは、置換後、ファイルはstdoutに書き込まれることに注意してください。あなたは望むかもしれない:
を使用して出力をリダイレクトします
... > my_new_course
-e
sedへのスイッチを使用して「インプレース」で置換を実行します
破壊的なインプレースバリアントを使用-iEXTENSION
している場合は、何か問題が発生した場合に備えて、元のバージョンの指定されたEXTENSIONでコピーを保持することに加えて使用することをお勧めします。
編集:
変数に格納されているプレフィックスと目的の行を一致させるには、"
単一引用符を使用'
すると変数の拡張が妨げられるため、sedスクリプトを二重引用符で囲む必要があります。
sed "/^$input/ s/0/1/" my_course
これを試しましたか:sed -e'[line] s / old_string / new_string /'my_course
PS:[]は使用しないでください。「s」の直前に数字を入力する必要があることを明確にするためだけにあります。
乾杯!
実際、この場合の-eは必要ありません、私はただ書くことができます
sed '<line number>s/<old string>/<new string>/' my_course