다음과 같은 파일이 있습니다.
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
매우 간단합니다. 다음을 수행해야 합니다.
- 텍스트를 16진수로 변환
- 0a24(개행 및 $)를 2024(공백 및 $)로 대체
- 다시 텍스트로 변환하세요.
이 한 줄의 코드에서는 파일을 "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'
awk
sed
패턴을 패턴으로 찾아서 space+number
바꾸는 동안 출력 필드 구분 기호를 공백으로 설정하여 열을 행으로 변경합니다 newline+number
.