특정 패턴 앞의 줄에서 개행 문자를 제거하는 방법은 무엇입니까?

특정 패턴 앞의 줄에서 개행 문자를 제거하는 방법은 무엇입니까?

다음과 같은 파일이 있습니다.

1
22
1
4
$3
3
5556
$33
$233
$1
5

$개행 문자를 공백으로 바꿔 줄 바꿈으로 시작하는 모든 줄을 이전 줄로 이동 하고 싶습니다 . 내 결과는 다음과 유사해야 합니다.

1
22
1
4 $3
3
5556 $33 $233 $1
5

sed또는 을 사용하여 grep이 작업을 어떻게 수행할 수 있습니까 awk?

답변1

비슷한 질문이 여기에 게시되었습니다.텍스트 파일 형식을 지정하는 SED 명령

Stéphane의 의견에서 알 수 있듯이 문제에 대한 해결책 sed은 다음과 같습니다.

sed -e :a -e '$!N;s/\n\$/ $/;ta' -e 'P;D' filename

답변2

매우 간단합니다. 다음을 수행해야 합니다.

  1. 텍스트를 16진수로 변환
  2. 0a24(개행 및 $)를 2024(공백 및 $)로 대체
  3. 다시 텍스트로 변환하세요.

이 한 줄의 코드에서는 파일을 "file"이라고 합니다.

# xxd -ps file|tr -d "\n"|sed s/0a24/2024/g|xxd -r -ps
1
22
1
4 $3
3
5556 $33 $233 $1
5

답변3

$ vi file
:g/^\$/-1j
:x

:join즉, 달러 기호 줄 앞 줄에 한 줄을 작성한 후 저장하고 종료합니다.

답변4

이 시도:

awk 'BEGIN {ORS = " "} {print}' file | sed 's/\( \)\([0-9]\)/\n\2/g'

awksed패턴을 패턴으로 찾아서 space+number바꾸는 동안 출력 필드 구분 기호를 공백으로 설정하여 열을 행으로 변경합니다 newline+number.

관련 정보