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