텍스트 파일에서 모든 공백을 쉼표로 바꾸십시오


10

텍스트 안의 모든 공백을 쉼표로 바꿔야합니다. 현재이 줄을 사용하고 있지만 작동하지 않습니다. 원래 파일과 정확히 동일한 텍스트 파일을 출력으로 얻습니다.

sed 's/[:blank:]+/,/g' orig.txt > modified.txt

감사


SED의 / [[: 빈 :]] \ + /, / g '
mug896

@ mug896은 Ubuntu 18.04에서 나를 위해 일했습니다. +
dmontaner

답변:


15

sed:

sed -e 's/\s\+/,/g' orig.txt > modified.txt

또는과 perl:

perl -pne 's/\s+/,/g' < orig.txt > modified.txt

편집 : perl에서 줄 바꿈을 제외하려면 이중 음수를 사용 's/[^\S\n]+/,/g'하거나 선택한 공백 문자와 일치시킵니다 's/[ \t\r\f]+/,/g'.


그러나 여전히 문제가 있습니다 : "next lines \ n"을 쉼표로 바꾸고 싶지 않으며 perl 명령이 현재하고 있습니다. 그녀는 당신이 쓴 명령을 sed, 여전히 작동하지 않습니다.
aneuryzm

+sed 에서 연산자 를 탈출해야해서 죄송합니다 . 방금 답변을 업데이트했습니다. 줄 바꿈은 펄에서 whitepsace이므로 whitepsace 클래스를 포함하고 싶지 않으면 수동으로해야합니다. 나는 그것을 위해 두 가지 해결책을 추가했습니다.
Caleb

13

사용 tr:

tr -s '[:blank:]' ',' <file

가로 공백이 쉼표로 바뀝니다. 반복되는 공백은 하나의 쉼표로만 대체됩니다.


-1
awk '{print $1","}' Servers | tr -d '[\n]' | xargs echo 

여기서 파일 이름은 Servers입니다. 아래 내용이 들어 있습니다.

Server1
Server2
Server3

위의 명령을 사용하면 아래 출력을 얻을 수 있습니다.

Server1,Server2,Server3,


[mohramak@oc3246038448 Desktop]$ cat Servers
Server1
Server2
Server3
[mohramak@oc3246038448 Desktop]$ awk '{print $1","}' Servers | tr -d '[\n]' | xargs echo 
Server1,Server2,Server3,
[mohramak@oc3246038448 Desktop]$ 
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.