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

Linux sed コマンドでターゲット ファイルが変更されない

sed からの変更を保存する場合 -i を使用してファイルに戻ります オプション:

$ cat file
<head>abc</head>
    <td>hello</td>
      <td>hello</td>
        <td>hello</td>
    <td>abc</td>
     <td>abc</td>
<h1>abc</h1>

$ sed -ni '/<td>/{s/^\s*//;s/abc//;s/<\/\?td>//g;p}' file

$ cat file
hello
hello
hello

編集: sed で別のセパレータを使用すると、正規表現がより明確になります 拡張正規表現オプション -r を使用します :

$ sed -r 's_</?td>__g' file
    hello
      hello
        hello
    abc
     abc

? 前の文字をオプションにして / 正規表現を <td> に一致させるために存在する必要はありません そして </td> 1つに。


sed コマンドで ファイル自体を変更するには -i オプションを使用します そうでない場合、出力は画面に表示されますが、ファイルは同じままです。

式は次のようになります:

sed -i <targetFile> 's/<beforeText>/<afterText>/g' <targetFile>

例:

sed -i myCredentials.txt 's/secretPassword/xxx/g' myCredentials.txt

別のオプション - 別のファイルに出力して名前を変更:

sed 's/secretPassword/xxx/g' myCredentials.txt > temp.txt
rm myCredentials.txt && mv temp.txt myCredentials.txt

詳細については、ドキュメントを参照してください:

<ブロック引用>

sed ユーティリティは、指定されたファイル、または nofiles が指定されている場合は標準入力を読み取り、コマンドのリストで指定された入力を変更します .次に、入力は標準出力に書き込まれます。単一のコマンドを sed の最初の引数として指定できます。 -e または -f オプションを使用して、複数のコマンドを指定できます。すべてのコマンドは、その起源に関係なく、指定された順序で入力に適用されます。

-私 ファイルをその場で編集 、指定された拡張子でバックアップを保存します。長さゼロの拡張子が指定された場合、バックアップは保存されません。ファイルのインプレース編集時に長さ 0 の拡張子を付けることはお勧めしません。ディスク容量が使い果たされた場合などに破損や部分的なコンテンツが発生するリスクがあるためです。


Linux
  1. Linuxsedコマンドの使用方法

  2. Linux での sed コマンドの例

  3. sed:コマンドが見つかりません

  1. LinuxでTarコマンドを使用する方法

  2. Linux Sedコマンド:使用法と例

  3. コマンドSed‘1!g; h; $!d’は、ファイルの内容をどのように逆にしますか?

  1. Linuxでmd5sumコマンドを使用する方法

  2. Linuxでのファイルコマンドの基本的な例

  3. LinuxでのSplitコマンドの9つの便利な例