숫자로 끝나는 줄 끝에서 개행 문자를 제거하는 방법은 무엇입니까?

숫자로 끝나는 줄 끝에서 개행 문자를 제거하는 방법은 무엇입니까?

아래와 같은 파일이 있습니다. 줄이 숫자(바람직하게 sed는 또는 ) 로 끝나면 개행 문자를 제거하고 싶습니다 awk.

파일.txt:

some question:       1404241

what's your name?

1498646

my name is Bond.

그래서 나는 다음과 같은 출력을 원합니다 :

some question:       1404241 what's your name? 

1498646 my name is Bond.

답변1

실제로 입력/출력이 주어지면 여러 개의 새 줄을 제거합니다. 이는 다음과 같은 이유로 인해 문제를 약간 더 어렵게 만듭니다 sed.표준으로한 번에 한 행씩 반복합니다.

Perl과 같은 것을 사용하는 것이 좋습니다.

#!/usr/bin/env perl
use strict;
use warnings;

#read everything
local $/;
#do replacement of a digit, following by one - or more - linefeeds. 
#m is multi-line, r is 'return the result' (to print)
#g is do it repeatedly. 
print <DATA> =~ s/(\d)\n+/$1 /mrg;

__DATA__
some question:       1404241

what's your name?

1498646

my name is Bond.

이것은 다음을 인쇄합니다:

some question:       1404241 what's your name?

1498646 my name is Bond.

이것은 라이너로 바뀔 수 있습니다:

perl -0777 -e 'print <> =~ s/(\d)\n+/$1 /mgr'

답변2

sed -e:n -e'$!N;s/\([0-9]\)\n/\1/;tn' -eP\;D <infile >outfile

...요청하신 대로 삭제가 진행되었으나, 요청하신 결과를 얻지 못했습니다. 어쩌면 당신이 원하는 것은 숫자 뒤의 줄 바꿈을 공백으로 바꾸는 것일 수도 있습니다. 그렇죠?

sed -e:n -e'/[0-9]$/{$!N;s/\n$//;}' -etn -e's/\n/ /' <infile >outfile

...어차피 이게 더 효율적이겠죠.

관련 정보