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

関連情報