ショコラ
sedコマンドでファイルの中の文字列を置換して保存するには?
「sed -i ‘s/{検索文字列}/{置換文字列}/’ {ファイル名}」でキメマス。
※-iオプションは「ファイルを読み込んで、そのファイルに保存する」ということ。
※元の文字は括弧で囲って(括弧に¥のエスケープ必要)\1で利用します。
もっさん先輩
①ファイルの中の文字列を置換して画面に表示します。
sed 's/{検索文字列}/{置換文字列}/' {ファイル名}
②ファイルの中の文字列を置換してファイルを上書き保存します。
sed -i 's/{検索文字列}/{置換文字列}/' {ファイル名}
③複数のファイルを置換します。
sed -i 's/{検索文字列}/{置換文字列}/' {ファイルパターン}
④行を追加します。
sed -i '$a{追加する行}' {ファイル名}
⑤1行目に挿入します。
sed -i '1i{追加する行}' {ファイル名}
例
アパッチの AddDefaultCharset を「UTF-8」から「Off」に変更します。
sed -i 's/AddDefaultCharset UTF-8/AddDefaultCharset Off/' /etc/httpd/conf/httpd.conf
locale.genファイルの「# ja_JP.UTF-8」の行の「#」を取り有効化します。
sed -i 's/# ja_JP.UTF-8/ja_JP.UTF-8/' /etc/locale.gen
ドッカーファイルの中で oracle-xe-21c.confファイルの文字列を置換します。
echo "sed -i "\""s/CHARSET=AL32UTF8/CHARSET=${CHARSET}/"\"" /etc/sysconfig/oracle-xe-21c.conf";
CentOS8 のリポジトリを更新します。
sed -i 's/mirrorlist=/#mirrorlist=/; s/#baseurl=http:\/\/mirror/baseurl=http:\/\/vault/'\
/etc/yum.repos.d/CentOS-Linux-*.repo
オラクルの日時に変換します。
sed -i "s/\('[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\} [0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}'\)/TO_DATE(\1,'YYYY-MM-DD HH24:MI:SS')/" pgdump.sql
正規表現の+は¥でエスケープします。
sed 's/VTFont=.\+$/VTFont=HackGen Console,0,-13,0/'
以上