次の内容を含むログファイルがあります。
#SOME MORE DATA
These switches don't have latest images :
SWEs-elmPCI-A-01#
#SOME MORE DATA
These switches don't have latest images :
SWEs-elmPCI-B-01#
#SOME MORE DATA
These switches don't have latest images :
SWEs-elmPCI-C-01#
#SOME MORE DATA
These switches don't have latest images :
SWEs-elmPCI-D-01#
#SOME MORE DATA
These switches don't have latest images :
SWEs-elmPCI-B-01#
#SOME MORE DATA
ファイルからこれらの行をすべて削除し、ファイルの末尾に追加して次のように作成したいと思います。
#ALL the remaining data at top
These switches don't have latest images :
SWEs-elmPCI-A-01#
SWEs-elmPCI-B-01#
SWEs-elmPCI-C-01#
SWEs-elmPCI-D-01#
SWEs-elmPCI-B-01#
使用を検討していますが、sed -n '/These*/{n;p}'
まだ結果は得られません。
注:データが多いほど、ファイルにはより多くのコンテンツが含まれます。このタイプの行はファイルのどこにでも配置できます。
These switches don't have latest images :
SWEs-elmPCI-B-01#
答え1
sed -ne '/^These/{n;w tempfile
d;};p' < oldfile > newfile
echo "These switches don't have latest images :" >> newfile
cat tempfile >> newfile
一時ファイルの代わりに予約済みスペースを使用できます。
sed -ne '/^These/{n;H;d;};p;${x;s/^/These switches don'"'"'t have latest images :/;p;}' < oldfile > newfile
ただし、ファイルが「追加データ」の代わりにこれらのスイッチブロックの1つで終わると失敗します。これは、${x;....p;}
コマンドの前に最後の行を削除しなかった場合にのみ最後のコマンドが実行されるためですd
。一時ファイルを回避するには、PerlまたはPythonを使用することをお勧めします。確かにもっと読みやすいです。