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
。
また、g
sed のオプションは、ファイル内の変数のすべての出現を更新します。例:
sed 's/,/ /g' filename