データセット名と日付/時刻を含む大容量ファイルがあります。
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
答え2
デフォルトでは、sedは一度に1行ずつロードして処理します。
2番目の行をロードするには、このN
ディレクティブを使用できます。その後、行末文字を空の文字列(または他の選択した接続文字列)に置き換えることができます。
だから
sed '/"String"/{N;s/\r\n//;}' TheFile.txt
答え3
これはMacOで動作します。
gsed '/String/{N;s/\r\n//}'
これはWindowsシステムのCygwin bashで動作しますが、Linuxシステムでも動作します。
sed '/"String"/{N;s/\r\n//;}'