문제

아래와 같은 패턴이 있습니다

hi
hello
hallo
greetings
salutations
no more hello for you

다음 명령을 사용하여 모든 개행 문자를 탭으로 바꾸려고 합니다.

sed -e "s_/\n_/\t_g"

하지만 작동하지 않습니다.

누구든지 도와주실 수 있나요?sed/awk에서 솔루션을 찾고 있습니다.

도움이 되었습니까?

해결책

원하는 출력에 대해 잘 모르겠습니다

# awk -vRS="\n" -vORS="\t" '1' file
hi      hello   hallo   greetings       salutations     no more hello for you 

다른 팁

여기 tr 더 나은 것 같아요 :

tr "\n" "\t" < newlines 

Nifle은 의견에서 제안한 것처럼 newlines 다음은 원본 텍스트를 보유한 파일의 이름입니다.

왜냐하면 sed 너무나 라인 지향적이어서 이와 같은 경우 사용하는 것이 더 복잡합니다.

sed '$!{:a;N;s/\n/\t/;ta}' file

한 줄씩 개행 문자를 다음과 같이 바꿀 수 없습니다. sed.줄을 축적하고 줄 바꿈을 교체해야합니다 ~ 사이 그들을.

text abc\n    <- can't replace this one

text abc\ntext def\n    <- you can replace the one after "abc" but not the one at the end

이것 sed 스크립트는 모든 줄을 누적하고 마지막 줄을 제외한 모든 줄 바꿈을 제거합니다.

sed -n '1{x;d};${H;x;s/\n/\t/g;p};{H}'

그건 그렇고, 당신의 sed 스크립트 sed -e "s_/\n_/\t_g" "모든 슬래시 뒤에 개행 문자를 슬래시 뒤에 탭으로 바꾸십시오"라고 말하려고합니다.밑줄은 구분 기호 역할을 합니다. s 슬래시를 검색 및 바꾸기용 문자로 보다 쉽게 ​​사용할 수 있도록 명령을 실행합니다.

paste -s

-S는 명령 줄 순서로 각 별도의 입력 파일의 모든 줄을 연결합니다. 각 입력 파일의 마지막 줄을 제외한 모든 줄의 Newline 문자는 -d 옵션으로 달리 지정되지 않는 한 탭 문자로 대체됩니다.

당신은 거의 SED 스크립트와 함께 있습니다.

sed -e "s/\n/\t/g"

그만큼 \ 탈출하기에 충분합니다. 추가 할 필요가 없습니다. _그리고 당신은 그것을 추가해야합니다 / ~ 전에 g 결국 SED가 대본의 마지막 부분임을 알리십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top