GNU/Linux >> Linux の 問題 >  >> Linux

Linuxシェルスクリプトでファイル内の単語を変更する方法

sed を使用できます:

sed -i 's/MyCar on/MyCar off/' path/to/file

これは、シェルのみで実行できます。この例では、この特定の例では不必要な case ステートメントを使用していますが、複数の置換を組み込む方法を示すために含めました。コードは sed 1-liner よりも大きくなりますが、シェルのビルトインのみを使用するため、通常ははるかに高速です (小さなファイルの場合は 20 倍程度)。

REPLACEOLD="old"
WITHNEW="new"
FILE="tmpfile"
OUTPUT=""
while read LINE || [ "$LINE" ]; do
    case "$LINE" in
        *${REPLACEOLD}*)OUTPUT="${OUTPUT}${LINE//$REPLACEOLD/$WITHNEW}
";;
        *)OUTPUT="${OUTPUT}${LINE}
";;
    esac
done < "${FILE}"
printf "${OUTPUT}" > "${FILE}"

単純なケースでは、case ステートメントを省略できます:

while read LINE || [ "$LINE" ]; do
    OUTPUT="${OUTPUT}${LINE//$REPLACEOLD/$WITHNEW}
"; done < "${FILE}"
printf "${OUTPUT}" > "${FILE}"

注:...|| [ "$LINE" ]... ビットは、新しい行で終わらないファイルの最後の行が失われないようにするためのものです (これで、テキスト エディターがそれらを追加し続ける理由が少なくとも 1 つわかりました)


Linux
  1. シェルスクリプトで一時ファイルを作成するにはどうすればよいですか?

  2. Linuxでシェルを変更する方法

  3. シェル スクリプトで Linux を使用してテンプレートを作成しますか?

  1. Linux でデフォルトのシェルを変更する方法

  2. LinuxでCでファイルを書く方法は?

  3. 起動時にシェルスクリプトを実行する方法

  1. Linuxでchmodを使用してファイルパーミッションを再帰的に変更する方法

  2. LinuxファイルでACLを表示または変更する方法

  3. 変数でディレクトリを変更するシェルスクリプト