テキスト操作に複数の sed コマンドを使用する

テキスト操作に複数の sed コマンドを使用する

bash ファイルがあり、これにいくつか変更を加えたいと思っています。

sed -i 's/      /    /g' testfile
sed -i -e 's/#[a-z]$//' -e '/^$/d' testfile
sed -i 's/ *$//' testfile
sed '/##=/ r header' testfile

最初のコマンドでは、TAB をスペースに置き換え、その後コメント (## で始まるコメントもあります) と空行を削除します。その後、ファイル内の指定されたパターンの後にファイルを挿入します。コマンドの順序に何か問題がありますか?

答え1

sed を 1 回実行するだけで複数の命令を与えることができます。例:

sed 's/\t/    /g;/^ *$/d;s/^#/NODIESE/' testfile

この一行

  1. タブをスペースに置き換える
  2. 空の文字列(または空行)で始まる行を削除します
  3. 先頭のダッシュをNODIESEという単語に置き換えます

したがって、テスト ファイルは 1 回だけ処理され、sed は 1 回だけ起動されます。

関連情報