ファイルの数字を使用したsedコマンドの生成

ファイルの数字を使用したsedコマンドの生成

次の入力ファイルがあります。

1
30
35
90 ...

私がやりたいことは、次のように表示されるように修正することです。

sed -i '1s///g' file_to_modify
sed -i '30s///g' file_to_modify

Linuxでこれを行う方法を知っていますか?

ベストアンサー1

lines.list行番号を含むファイルがあり、リストされている各行でsed実行される編集スクリプトを作成したいとします。s///g

sed 's:$:s///g:' lines.list

質問に表示される4つの数字を含むファイルが与えられると、sedスクリプトが生成されます。

1s///g
30s///g
35s///g
90s///g

s///g各行の末尾に追加するだけです。スラッシュエスケープを防ぐために、スクリプトのsコマンドは:代替区切り文字として使用されます。

このスクリプトを実行するには、以下を使用する必要がありますsed -f

sed 's:$:s///g:' lines.list | sed -i -f /dev/stdin file_to_modify

これにより、前に示したようにスクリプトが生成され、次のsed項目に適用されますfile_to_modify-isedsed

しかし、スクリプト自体を編集することはあまり意味がないことに注意してください。置換コマンドを含む空の正規表現は、最近一致した正規表現を再利用します。スクリプトにそのような式がないため、最初のsコマンドが実行されますsed

おすすめ記事