sed スクリプトを作成し、それを使用してファイルを編集するにはどうすればよいでしょうか?

sed スクリプトを作成し、それを使用してファイルを編集するにはどうすればよいでしょうか?

sed を使用してファイルを 1 ステップずつ編集する方法はわかっていますが、実際の sed スクリプトを作成し、それをファイルで使用して、個々の sed コマンドと同じ操作を実行するにはどうすればよいでしょうか。たとえば、次の 3 つの sed コマンドがあります。

sed -i '4i\ ' ベーコンファイル

sed -i 's/,/\t\t/' ベーコンファイル

sed -i 's/,/ /' ベーコンファイル

答え1

コマンドをファイルに入れる

これらの行を という名前のスクリプト ファイルに配置しますscript.sed

4i\ 
s/,/\t\t/
s/,/ /

次に、次のように実行します。

$ sed -i -f script.sed baconFile

スタンドアロンの sed スクリプトを作成する

単一の実行ファイルにしたい場合は、次のようにします。

#/bin/bash

sed -i '
4i\ 
s/,/\t\t/
s/,/ /
' "$@"

上記の行を というファイルに入れてscript.bash実行可能ファイル ( ) にしchmod +x script.bash、次のように実行します。

$ script.bash baconFile

スクリプトファイルの作成

この方法を使用して、上で説明したファイルを作成できます。

$ cat > script.bash <<EOF
#!/bin/bash

4i\ 
s/,/\t\t/
s/,/ /
EOF

これによりスクリプト ファイルが作成されます。次のコマンドを使用して確認できます。

$ cat script.bash
#!/bin/bash

4i\ 
s/,/\t\t/
s/,/ /

答え2

sed -i '4i\ 

s/,/\t\t/

s/,/ /' baconFile

sed はほとんどのインタープリターと同様に動作し、複数のコマンドを別々の行に記述したり、. で区切ったりすることができます。.;がない場合、GNU sed最初の行でエラーが発生する可能性があります。


sed スクリプトを作成するには、shebang で sed インタープリターへの絶対パスを指定するだけです。また、ファイルが実行可能であることを確認します。

#!/bin/sed -f
s/foo/bar/

chmod u+x foo
./foo <<<foo
bar

または、スクリプトを sed コマンドとともに呼び出すこともできます。 sed -i -f foo file

答え3

-fオプションが必要ですsed -f sed-script

答え4

これを実行するには、bash または korn シェル スクリプトを記述します。動的にしたい場合は、ファイル名をパラメータとして受け取り、任意のファイルに対してこれらの sed コマンドを実行できるようにすることができます。

新しいファイルを作成します。updatefile.sh

#!/bin/bash
#$1 is the first parameter being passed when calling the script. The variable filename will be used to refer to this.
filename=$1

sed '4i\ ' filename
sed 's/,/\t\t/' filename
sed 's/,/ /' filename

次に、 を実行するupdatefile.sh baconFileと、ファイルに対して 3 つの sed コマンドがすべて実行されますbaconFile

また、gsed のオプションは、ファイル内の変数のすべての出現を更新します。例:

sed 's/,/ /g' filename

関連情報