개행 문자를 탭 문자로 바꾸는 방법은 무엇입니까?
문제
아래와 같은 패턴이 있습니다
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가 대본의 마지막 부분임을 알리십시오.