데이터세트 이름과 날짜/시간이 포함된 대용량 파일이 있습니다.
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>
"String"이라는 단어 뒤에 오는 줄을 연결하고 싶습니다.
내 최종 결과는 다음과 같습니다
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
나는 사용할 것이다앗. 줄에 "String"이 포함되어 있으면 개행 문자 없이 인쇄하고, 그렇지 않으면 개행 문자를 사용하세요.
awk '
BEGIN {FS = "\""; RS = "\r\n"}
{printf "%s%s", $0, $2 == "String" ? "" : RS}
' The_File.txt
답변2
기본적으로 sed는 한 번에 한 줄씩 로드하고 처리합니다.
두 번째 행을 로드하려면 이 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//;}'