sedを使用した単純な回線接続の問題

sedを使用した単純な回線接続の問題

データセット名と日付/時刻を含む大容量ファイルがあります。

ss:Type="String">EDII.HA5274.FNS99R.R999999.LFN5913.G1795V00</Data>
ss:Type="DateTime">2022-12-28T00:00:00.000</Data>
ss:Type="DateTime">1899-12-31T23:50:14.000</Data>
ss:Type="String">EDII.HA5273.FNS9901R.R999999.LFN5913.G1796V00</Data>
ss:Type="DateTime">2022-12-29T00:00:00.000</Data>also,
ss:Type="DateTime">1899-12-31T23:43:35.000</Data>

「文字列」という単語の後に続く行を連結したいと思います。

私の最終結果は次のとおりです。

ss:Type="String">EDII.HA5274.FNS99R.R999999.LFN5913.G1795V00</Data>ss:Type="DateTime">2022-12- 28T00:00:00.000</Data>
ss:Type="DateTime">1899-12-31T23:50:14.000</Data>
ss:Type="String">EDII.HA5273.FNS9901R.R999999.LFN5913.G1796V00</Data>ss:Type="DateTime">2022- -29T00:00:00.000</Data>
ss:Type="DateTime">1899-12-31T23:43:35.000</Data>

私の解決策:

cat The_File.txt| sed 's/\(^.*String.*$\)\r\n/\1/g'

何もしませんでした。 "\r\n" は正しい eol 文字です。私のテキストエディタで見ることができます。

今詰まっています..

どんなアドバイスでも役に立ちます。また...私のソリューションに問題がありますか?

ありがとう

ベストアンサー1

私は使用します。行に「文字列」が含まれている場合は改行文字なしで印刷し、それ以外の場合は改行文字を使用してください。

awk '
    BEGIN {FS = "\""; RS = "\r\n"}
    {printf "%s%s", $0, $2 == "String" ? "" : RS}
' The_File.txt

おすすめ記事