プログラム出力のログファイルを保存します。問題は、アーカイブしたくない非常に長い行の7ビットASCIIデータ(エンコードされたバイナリ)をダンプするときにエラーが発生することがあることです。改行文字に達するまで、行の長さは200KBを超えることがあります。
短くパイプ可能な方法は何ですか?sed
行の最初の80文字と最後の40文字のみを保持し、250文字を超える行のみを変更します。_?
ベストアンサー1
sed では、すべてのコマンドには、そのコマンドが適用される行を示す条件をプレフィックスで付けることができます。一般的な条件の1つは検索パターンです。検索パターンは、/.\{250\}/
250 文字を超える文字を含む行と一致します。これらの行では、最初の80文字と最後の40文字を一致させ、行__
全体を接頭辞と接尾辞に置き換えます。
sed -e '/.\{250\}/ s/^\(.\{80\}\).*\(.\{40\}\)$/\1__\2/'
十分に長い行だけが一致するように代替コマンドのパターンを並べ替えることもできます。
sed -e 's/^\(.\{80\}\).\{130,\}\(.\{40\}\)$//'