다음과 같은 파일이 있습니다
"IN001~24Apr16~Hi,
what a way?
oh no!~
not here~"
"IN003~29Apr16~
what a way?
~oh no!
say again.
not again~"
다음 형식으로 출력하고 싶습니다.
"IN001~24Apr16~Hi,what a way?oh no!~not here~"
"IN003~29Apr16~what a way?~oh no!say again.not again~"
awk 또는 sed를 사용하는 모든 솔루션을 매우 환영합니다.
답변1
awk '{ printf "%s",$0 }; /"$/ { print ""; };' inputfile
입력 줄이 큰따옴표로 끝나는 경우에만 출력에 개행 문자가 표시됩니다. 따라서 이 awk
코드는 줄 바꿈 없이 모든 입력 줄을 출력합니다. 그런 다음 입력 줄이 a로 끝나는지 확인하고 "
그렇다면 개행 문자를 출력합니다.
답변2
$ sed -n -e '/^"/{h;n;}' -e H -e '/"$/{g;s/\n//g;p;}' file
"IN001~24Apr16~Hi,what a way?oh no!~not here~"
"IN003~29Apr16~what a way?~oh no!say again.not again~"
이 sed
명령은...
/^"/{h;n;}
"
: 로 시작하는 모든 라인을 예약된 공간( ) 에 복사하고h
, 그 안에 있는 모든 내용을 덮어쓴 후 즉시 다음 입력 라인(n
)으로 이동합니다.H
: 예약된 공간에 추가 라인이 추가됩니다./"$/{g;s/\n//g;p;}
: 줄이"
예약된 공간에서 끝나는 경우 예약된 공간( )을 차지하고g
줄바꿈이 제거되고(이 줄바꿈은 예약된 공간에 줄이 추가될 때 추가됨) 결과 문자열이 인쇄됩니다.
명령줄은 다음과 같이 압축될 수 있습니다.
$ sed -n '/^"/{h;n;};H;/"$/{g;s/\n//g;p;}' file