GNU/Linux >> Linux の 問題 >  >> Linux

Linuxシェルスクリプトを使用してパターンが一致した後、ファイルに複数行のデータを挿入します

複数のファイルに挿入する必要のあるコードがありますか?そうすれば、あなたは私が苦労しているようなものです!私は、ポップアップコードを挿入する必要のある多数のHTMLファイルを含むcpanelでホストされているWebサイトで作業していました。 HTMLファイルの数は425でした。Windowsでそれを行うのは悪夢でした。でもねえ、もっと賢い方法を見つけたとは言わなかった。以下のチェックアウト!

ステップ1:CPANELからファイルをコピーする

WinSCPを使用して、cpanelからローカルWindowsシステムにすべてのファイルをコピーします。

ステップ2:WindowsからLinuxにファイルをコピーする

次に、HTMLファイルをLinuxサーバーにコピーします。独自のサーバーがない場合は、virtualboxを使用してデスクトップ上でLinuxシステムを仮想的に実行できます。ここでvirtualboxをインストールする方法を確認してください。

ステップ3:「sed」コマンドを使用してコードを挿入します

以下のsedコマンドを使用して、別のファイルからコードを挿入します。例:「add.txt」ファイルから「input.txt」に挿入されるデータ。これで、コマンドは次のようになります:

Input.txt

abcd
efgh
ijkl
mnop
qrst

add.txt

uvwx
yzab
cdef
ghij
klmn
$sed '/ijkl/r add.txt' input.txt

このコマンドは、パターン「ijkl」が一致した後、add.txtからinput.txtにコンテンツを追加します。したがって、出力は次のようになります。

abcd
efgh
ijkl
uvwx
yzab
cdef
ghij
klmn
mnop
qrst

上記のコマンドは、端末にコンテンツを出力します。ファイルを内容で更新するには、次に示すようにsedコマンドで「-i」を使用します。

$sed -i '/ijkl/r add.txt' input.txt

ファイルからではなく直接入力してコンテンツを挿入する必要がある場合は、次のコマンドを使用できます。

$sed -i 's/.*ijkl.*/uvwx\n&/' input.txt
abcd
efgh
ijkl
uvwx
mnop
qrst

ステップ4:上記のコマンドをファイル数のループで実行します

ファイルを変更する必要があるディレクトリに移動します。 「forloop」を使用して、以下のコマンドでデータを挿入します。

for i in *;
do
    $sed '/ijkl/r add.txt' $i
done

上記のコードでは、*はファイルを表します。各ファイルについて、パターン「ijkl」が一致した後、$iとしてadd.txtファイルの内容を追加します。

ステップ5:ファイルをLinuxからWindows、Cpanelにコピーバックします

最後のステップは、編集したファイルをLinuxサーバーからローカルWindowsシステムにコピーバックすることです。次に、scpまたはftpを使用して、ローカルWindowsシステムからcpanelにファイルをコピーします。


Linux
  1. 最も古いファイルを移動するためのシェルスクリプト?

  2. ファイルに複数の行を追加するにはどうすればよいですか?

  3. ファイル名に先行ゼロを追加する Linux シェル スクリプト

  1. Linuxシェルスクリプトで正規表現を使用してファイルを検索する方法

  2. パターンの後にコンテンツをgrepする方法は?

  3. シェルスクリプトを使用して、指定されたパターンの後にファイルに複数の行を挿入します

  1. シェルスクリプトでバッファにデータを追加する方法は?

  2. Linux シェルで rz と sz を使用する

  3. シェル スクリプトで Linux を使用してテンプレートを作成しますか?