sed - 新しいファイルに書き込むときに改行文字を保持する

sed - 新しいファイルに書き込むときに改行文字を保持する

データを含むファイルがあります。データに削除する必要のある成果物が含まれている場合があります。例示的な行は次のとおりです。

@@@@@@@@@@DK2018.4.24_0:0:0.200985,0.88,0.35,0.49,13.52,248.3

または次のようになります。

\2017.9.12_0:0:0.152507,0.02,0.82,0.10,11.76,181.8
\2017.9.12_0:0:0.554122,0.18,0.93,0.04,11.76,191.1
\2017.9.12_0:0:0.654682,0.06,0.89,0.10,11.74,184.0
\2017.9.12_0:0:0.755092,0.00,0.89,0.06,11.77,180.5
\2017.9.12_0:0:0.855754,0.02,0.87,0.09,11.76,181.4
\2017.9.12_0:0:0.955123,0.13,0.80,0.23,11.77,189.8
\2017.9.12_0:0:1.055499,0.10,0.82,0.35,11.76,187.6
\2017.9.12_0:0:1.155970,0.18,0.81,0.40,11.74,192.9
\2017.9.12_0:0:1.256581,0.15,0.91,0.44,11.74,189.3
\2017.9.12_0:0:1.356065,0.26,0.78,0.46,11.72,198.7
\2017.9.12_0:0:1.456712,0.37,0.69,0.33,11.74,208.1

どちらの場合も、日付文字列の前に不要な文字が表示されます。これらを削除し、残りはすべて維持する必要があります。時には、これらの成果物が日付列以外の列の1つにあることがあります。

私は次のようにsedを使用しようとしています:

sed 's/[^0-9:_.,]*//g' dat.log > test.log

数字、コロン、アンダースコア、ドット、カンマを除くすべてを削除することが目的です。これは素晴らしい作品です。問題は、sedが改行文字を書き換えないことです。プロセス中にキャンセルされることを知っていますが、その行がファイルに書き込まれたときにどのように戻すことができますか?

編集する:例の入力に行を追加し、sedコマンドの出力を追加しました。

2017.9.12_0:0:0.051920,0.03,0.74,0.09,11.72,182.72017.9.12_0:0:0.152507,0.02,0.82,0.10,11.76,181.82017.9.12_0:0:0.253551,0.00,0.89,0.04,11.77,180.52017.9.12_0:0:0.353267,0.04,0.96,0.02,11.77,182.72017.9.12_0:0:0.453707,0.15,0.95,0.02,11.71,189.32017.9.12_0:0:0.554122,0.18,0.93,0.04,11.76,191.12017.9.12_0:0:0.654682,0.06,0.89,0.10,11.74,184.02017.9.12_0:0:0.755092,0.00,0.89,0.06,11.77,180.52017.9.12_0:0:0.855754,0.02,0.87,0.09,11.76,181.42017.9.12_0:0:0.955123,0.13,0.80,0.23,11.77,189.82017.9.12_0:0:1.055499,0.10,0.82,0.35,11.76,187.62017.9.12_0:0:1.155970,0.18,0.81,0.40,11.74,192.92017.9.12_0:0:1.256581,0.15,0.91,0.44,11.74,189.32017.9.12_0:0:1.356065,0.26,0.78,0.46,11.72,198.72017.9.12_0:0:1.456712,0.37,0.69,0.33,11.74,208.1

編集2:問題は、Raspberry PiのデータがMacintoshデータセットを使用して保存されたファイルから来たことです。理由はわかりませんが、変更を使用するとtr '\r' '\n' < macfile.txt > unixfile.txt問題が解決しました。

ベストアンサー1

ここでは次のようにできるようです。

tr -cd '0-9:_.,\r\n' < file.in > file.out

行区切り文字を含む元の書式を保持したい文字を除くすべての文字を削除します。

おすすめ記事