아래와 같은 파일이 있습니다. 줄이 숫자(바람직하게 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
...어차피 이게 더 효율적이겠죠.